Explorando os Novos Recursos do C# 12 -Construtores Primários

Daniel Jesus
3 min readJun 3, 2023

--

Fala Nerdzolas e Fala Coders,

Sabemos que a linguagem de programação C# está sempre em evolução, trazendo inovações e melhorias em cada versão. Um dos recursos aguardados no C# 12 é a introdução dos construtores primários para classes, que tem potencial para simplificar a forma como as classes são criadas. Antes da explicação detalhada sobre este novo recurso, vamos primeiro orientar sobre como instalar a prévia do .NET 8, que trará a versão do C# 12.

Como Instalar o .NET 8 Preview

Antes de tudo, lembre-se que esta é uma versão de prévia, ou seja, ainda pode haver bugs e outros problemas. Portanto, não recomendamos sua utilização em ambientes de produção.

  1. Acesse o site oficial do .NET da Microsoft (https://dotnet.microsoft.com/download/dotnet/8.0).
  2. Na página, escolha a opção apropriada para o seu sistema operacional (Windows, macOS ou Linux).
  3. Baixe o SDK (Software Development Kit) do .NET 8 Preview.
  4. Após o download, execute o instalador e siga as instruções na tela para instalar o .NET 8 Preview no seu sistema.
  5. Para verificar se a instalação foi bem-sucedida, abra um terminal ou prompt de comando e digite dotnet --version. Você deverá ver 8.0.100-preview (ou um número de versão semelhante) se a instalação tiver sido bem-sucedida.

Agora que você já tem a prévia do .NET 8 instalada, é possível começar a explorar os novos recursos do C# 12.

O Que são Construtores Primários?

Os construtores primários são um recurso que já existia para records e structs no C#. Agora, no C# 12, esta funcionalidade também estará disponível para classes. Eles permitem declarar propriedades diretamente na assinatura do construtor da classe, tornando o processo de criação de classes mais simples e direto.

Aqui está um exemplo de como isso seria para records e structs, que já existe no .Net:

Com o lançamento do C# 12, poderemos utilizar a mesma sintaxe para classes:

Esse novo recurso permite simplificar o processo de criação de classes, uma vez que não precisamos mais abrir chaves para definir a estrutura da classe e tudo é definido diretamente na assinatura do construtor.

Continue a leitura para mais detalhes sobre os construtores primários, incluindo as diferenças entre como eles funcionam em classes versus records ou structs, e como eles interagem com a herança em C#.

Diferenças entre Construtores Primários em Classes e Records ou Structs

Existe uma diferença importante entre construtores primários em classes e em records ou structs. Nos records e structs, os parâmetros do construtor primário são criados automaticamente como propriedades públicas. Já em uma classe, eles são considerados privados. Para ter um comportamento semelhante ao de um record ou struct, precisamos especificar explicitamente a visibilidade das propriedades.

Por exemplo, se quisermos que Id e Name sejam propriedades públicas em uma classe, precisamos fazer isso explicitamente:

Com isso, Id e Name são agora propriedades públicas acessíveis, da mesma forma que seriam em um record ou struct

Interagindo com Herança

Um aspecto importante a ser considerado é como os construtores primários interagem com a herança em C#. Vamos imaginar que temos uma classe base Person e uma classe derivada Employee que estende Person. Em C# 12, podemos fazer algo assim:

Aqui, Employee herda de Person e adiciona uma nova propriedade Department. A assinatura do construtor de Employee inclui os parâmetros do construtor de Person, permitindo que passemos esses valores para o construtor da classe base.

Conclusão

O C# 12 promete trazer uma série de melhorias e novidades interessantes, com os construtores primários para classes sendo apenas um exemplo. Eles simplificam a sintaxe da linguagem e aceleram o processo de codificação, evitando a necessidade de escrever código extra para definir propriedades e construtores.

Lembre-se, esta é uma versão de prévia do C# 12, por isso pode haver mudanças antes da versão final. Fique de olho nas atualizações para saber mais sobre os novos recursos e melhorias no C# 12 e no .NET 8!

--

--

Daniel Jesus

Sênior Software Engineer, Technical Writer and Speaker, Microsoft Certified Professional