C#

21 jun, 2023

Novidades do C# 12: utilizando Primary Constructors em classes e structs

Publicidade

Capacidade antes restrita ao uso de Records, com o C# 12 podemos agora também empregar Primary Constructors na implementação de classes e structs. Parâmetros podem ser definidos na declaração de uma classe ou struct, viabilizando com isto a utilização dos mesmos no corpo dessas estruturas.

Na próxima listagem temos um exemplo deste tipo de implementação com a classe Projeto:

  • Os parâmetros do Primary Constructor acompanham a declaração do nome da classe Projeto (linha 3);
  • As propriedades TargetFramework, Descricao e Tecnologias são read-only, recebendo os parâmetros especificados via Primary Constructor;
  • Um simples construtor pode referenciar o Primary Constructor, como indicado nas linhas 5 e 6;
  • HorasTrabalhadas segue o comportamento de uma propriedade convencional, permitindo a leitura e escrita de valores.

No momento da publicação deste artigo Primary Constructors em classes e structs ainda são considerados um recurso em modo Preview. Assim, torna-se necessário configurar o atributo LangVersion no arquivo .csproj de projetos que utilizem esta capacidade com o valor preview:

Na próxima listagem temos exemplos de utilização do Primary Constructordo tipo Projeto, assim como do construtor convencional que referencia este elemento:

Ao executar esta aplicação será produzido o resultado apresentado na imagem a seguir:

Este primeiro projeto foi disponibilizado no GitHub:

https://github.com/renatogroffe/CSharp12-PrimaryConstructorClass

Caso achem útil esta solução, peço por favor uma estrela no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

Já a próxima listagem exemplifica o uso de um Primary Constructor em um struct chamado Demografia (linha 3), com os valores dos diferentes parâmetros declarados sendo associados às propriedades Pais, Ano e Populacao:

No código a seguir estão exemplos de utilização do struct Demografia(incluindo seu Primary Constructor):

E ao executar esta aplicação teremos como resultado:

Esta segunda Console Application também foi disponibilizada no GitHub:

https://github.com/renatogroffe/CSharp12-PrimaryConstructorStruct

Caso também achem útil esta nova solução, peço por favor mais uma estrela no repositório apoiando. Fica ainda o convite para que vocês me sigam lá no GitHub!

*O conteúdo deste artigo é de responsabilidade do(a) autor(a) e não reflete necessariamente a opinião do iMasters.