Start Debugging

Recursos do C# 14

O que de fato chegou no C# 14, com código.

Este pilar indexa tudo o que escrevi sobre os recursos da linguagem C# 14: tipos união, construtores e eventos partial, tipos de extensão, e os pequenos ganhos ergonômicos que passam despercebidos nas notas oficiais da versão.

Por onde começar

Comece pelos posts sobre tipos união e membros partial se você está vindo do C# 12 - são as mudanças de comportamento mais significativas. O resto é qualidade de vida.

O que tem nesta página

A lista abaixo coleta automaticamente os posts com qualquer uma das tags: c# 14, csharp 14, c#, csharp, c# language. Mais recentes primeiro.

Índice (138 posts)

2026 / 05

2026 / 04

2026 / 02

2026 / 01

2025 / 04

2025 / 01

  • Desempenho no .NET: ToList vs ToArray

    O .NET 9 melhora significativamente o desempenho de ToArray usando InlineArray, tornando-o mais rápido e eficiente em memória do que ToList. Veja benchmarks comparando .NET 8 vs .NET 9.

  • C# 13: Use coleções params com qualquer tipo de coleção reconhecido

    C# 13 estende o modificador params para além de arrays e suporta Span, ReadOnlySpan, IEnumerable e outros tipos de coleção, reduzindo boilerplate e melhorando a flexibilidade.

  • Como mudar para C# 13

    Como corrigir 'Feature is not available in C# 12.0' e mudar seu projeto para C# 13 alterando o target framework ou definindo LangVersion no seu arquivo .csproj.

2024 / 12

  • O que há de novo no C# 14.0

    Um resumo de todos os novos recursos do C# 14.0, incluindo a palavra-chave field, membros de extensão, atribuição condicional a null, conversões implícitas de span e muito mais.

  • Histórico de versões da linguagem C#

    A evolução do C# o transformou em uma linguagem moderna e de alto desempenho. Este guia acompanha cada marco importante. Os primeiros anos (C# 1.0 - 1.2). O C# foi lançado em 2002 como linguagem primária para o .NET Framework. Parecia com Java, mas com foco no desenvolvimento Windows. A versão 1.2 chegou logo depois com pequenas...

2023 / 11

2023 / 10

  • C# como marcar recursos como experimentais

    A partir do C# 12, um novo ExperimentalAttribute permite marcar tipos, métodos, propriedades ou assemblies como experimentais. Aprenda a usá-lo com diagnosticId, tags pragma e UrlFormat.

  • C# parâmetros ref readonly

    O modificador ref readonly no C# oferece uma forma mais transparente de passar referências somente leitura. Veja como ele melhora o modificador in, com restrições mais claras e visibilidade para quem chama.

  • C# como embaralhar um array?

    A forma mais fácil de embaralhar um array em C# é usar Random.Shuffle, introduzido no .NET 8. Funciona in-place tanto em arrays quanto em spans.

  • C# o que é uma NullReferenceException e como corrigir?

    Entenda o que causa uma NullReferenceException em C#, como debugar e como prevenir usando checagens de null, o operador null-conditional e tipos de referência anuláveis.

  • Adicionar/remover TypeInfoResolver em um JsonSerializerOptions existente

    Aprenda a adicionar ou remover instâncias de TypeInfoResolver em um JsonSerializerOptions existente usando a nova propriedade TypeInfoResolverChain do .NET 8.

  • C# 12 Interceptors

    Conheça os interceptors do C# 12, um recurso experimental do compilador no .NET 8 que permite substituir chamadas de método em tempo de compilação usando o atributo InterceptsLocation.

2023 / 09

2023 / 08

  • C# 12 Inline arrays

    Inline arrays permitem criar um array de tamanho fixo dentro de uma struct. Uma struct desse tipo, com um buffer inline, deve entregar desempenho comparável a um buffer unsafe de tamanho fixo. Inline arrays são pensados principalmente para o time do runtime e alguns autores de bibliotecas, para melhorar o desempenho em certos cenários. Provavelmente...

  • C# 12 expressões de coleção

    O C# 12 traz uma nova sintaxe simplificada para criar arrays. Fica assim: É importante notar que o tipo do array precisa ser especificado explicitamente, então você não pode usar var para declarar a variável. De forma parecida, se você quiser criar um Span<int>: Arrays multidimensionais As vantagens dessa sintaxe enxuta...

  • C# como esperar um processo terminar?

    Você pode usar o método WaitForExit para esperar o processo finalizar. Seu código espera de forma síncrona até o processo terminar e então retoma a execução. Veja um exemplo: O código acima inicia um novo processo cmd.exe e executa o comando timeout 5. A chamada process.WaitForExit() força o programa...

  • C# 12 alias para qualquer tipo

    A diretiva using alias foi relaxada no C# 12 para permitir criar alias para qualquer tipo, não apenas tipos nomeados. Isso significa que agora você pode criar alias para tuples, pointers, tipos de array, tipos genéricos, etc. Assim, em vez de usar a forma estrutural completa de um tuple, dá para criar um alias curto e descritivo...

  • Existe em C# um equivalente à instrução With...End With?

    A instrução With...End With do VB permite executar uma série de comandos que se referem repetidamente a um único objeto, usando uma sintaxe simplificada para acessar seus membros. Existe um equivalente em C#? Não. O mais próximo seriam os inicializadores de objeto, mas eles só servem para instanciar objetos novos.

2023 / 07

  • C# 12 - Construtores primários

    A partir do C# 12, é possível definir um construtor primário em classes e structs. Os parâmetros ficam entre parênteses logo após o nome do tipo. Eles têm um escopo amplo: podem inicializar propriedades ou campos, servir como variáveis em métodos ou funções locais e ser passados para um construtor base.

2023 / 06

  • Como começar a programar com C#

    Um guia para iniciantes sobre como começar a programar em C#, desde a configuração do Visual Studio até escrever seu primeiro programa e encontrar recursos de aprendizado.

  • Como mudar para o C# 12

    Resolva os erros de versão da linguagem C# 12 atualizando seu target framework para o .NET 8 ou definindo LangVersion no seu arquivo .csproj.

  • O que há de novo no C# 12

    Uma visão geral dos novos recursos do C# 12, incluindo construtores primários, parâmetros lambda padrão, expressões de coleção, inline arrays e mais.

2023 / 05

2023 / 03

2020 / 11

2020 / 05

  • C# using var (using declaration)

    Use as using declarations do C# 8 (`using var`) para descartar objetos IDisposable sem chaves aninhadas. Sintaxe, regras de escopo e quando preferir blocos `using`.

2020 / 04

2019 / 01

2013 / 10

2013 / 06

2013 / 05

2012 / 01

Todos os pilares Início