Novidades do C# 12: utilizando Primary Constructors em classes e structs
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 Constructor do 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 um ⭐️ 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 um ⭐️ no repositório apoiando. Fica ainda o convite para que vocês me sigam lá no GitHub!
E finalizo este post com um convite…
Acompanhe neste novo evento ONLINE e GRATUITO no Canal .NET dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 7, C#, ASP.NET Core e Azure Functions. Ao longo da apresentação será abordado o uso de diferentes frameworks, serviços na nuvem, mensageria e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.
Teremos ainda novidades do .NET 8 e C# 12 demonstradas através de exemplos práticos!
Quando: 13/06/2023 (terça) a partir das 21:00 — horário de Brasília
Faça sua inscrição em:
https://bit.ly/live-backend-dotnet-jun-2023