Novidades do C# 11: Auto-default structs
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):
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!