Novidades do C# 11: Auto-default structs

Renato Groffe
2 min readNov 7, 2022

--

Uma das novidades introduzidas com o C# 10 foram os construtores sem parâmetros como opção na implementação de structs. Abordei inclusive tal possibilidade em um artigo publicado neste blog:

Novidades do C# 10: melhorias no uso de Structs

Contudo, esta funcionalidade exigia que propriedades declaradas no struct fossem também inicializadas em seu construtor. É o que demonstram os erros na implementação exibida a seguir, com isto acontecendo mesmo que desejássemos que se assumissem os valores default para cada tipo envolvido:

Para solucionar esse problema seríamos então forçados a implementar as inicializações, como indicado na próxima imagem:

Já o C# 11 traz uma melhoria neste sentido, com uma funcionalidade chamada Auto-default structs permitindo que propriedades de um struct sejam automaticamente inicializadas assumindo seus valores default (e dispensando assim atribuições no próprio construtor):

Implementação com Auto-default structs

Na listagem seguinte temos exemplos de uso do struct Demografia, em que struc01 será preenchido com os valores default dos tipos definidos em suas propriedades e struc02 com valores especificados durante sua inicialização:

O resultado da execução deste código pode ser observado na próxima imagem:

Este exemplo também foi disponibilizado no GitHub:

https://github.com/renatogroffe/CSharp11-AutoDefaultStructs

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!

--

--

Renato Groffe

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