Novidades do C# 10: melhorias no uso de Structs

Renato Groffe
2 min readNov 27, 2021

--

Com o C# 10 também foram disponibilizadas melhorias com o objetivo de descomplicar o uso de Structs. Uma dessas novidades envolve a possibilidade de declarar construtores sem parâmetros, recurso esse útil para a geração de um struct preenchido com alguma forma de valores default.

Se tentássemos implementar um construtor sem parâmetros em uma versão anterior do C# (como em um exemplo baseado em .NET 5), iríamos nos deparar com um erro similar ao da imagem a seguir:

Já no C# 10 uma implementação como a da linha 10 é perfeitamente válida:

Podemos também nos valer agora de expressões baseadas em with para inicializar um struct por meio de outra estrutura deste tipo, redefinindo assim valores de alguns de seus elementos (além de reaproveitar outros que já foram previamente especificados). É o que demonstra a próxima listagem (que faz uso do struct Demografia apresentado anteriormente, com o preenchimento na linha 10 da variável brasil1970 a partir de uma cópia de brasil2000):

A execução deste exemplo produzirá o seguinte resultado:

O código-fonte desta aplicação foi disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet6-CSharp10-Structs-ParameterLessConstructor-With

Essa e outras novidades do C# 10 foram abordadas em uma live recente no Canal .NET, a qual está disponível para ser assistida gratuitamente no YouTube:

E finalizo este post com um convite…

Dia 29/11 (segunda) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Será uma live com os MVPs Alexandre Malavasi e Gustavo Bigardi abordando novidades na implementação de Web Apps com Blazor + .NET 6, além de dicas e pacotes úteis para acelerar e descomplicar a criação de projetos com estas tecnologias.

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/live-blazor-dotnet6

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet