Novidades do C# 10: Record Structs e Readonly Record Structs

Renato Groffe
3 min readJan 22, 2022

--

Dentre as novidades envolvendo o uso de Structs no C# 10 temos agora a possibilidade de implementar construções chamadas Record Structs. Na prática ao utilizar esse novo recurso estaremos ainda diante de um Struct com suas capacidades típicas de um Value Type, porém nos beneficiando de funcionalidades como expressões with (antes disponíveis apenas para a declaração de Records).

Na listagem a seguir está a definição de um Record Struct chamado Demografia:

Já no próximo exemplo está um exemplo de uso deste Record Struct:

  • O Struct brasil1970 foi gerado tomando como base brasil2000, com isto acontecendo através de uma expressão with;
  • Já a geração de brasil2021 ocorre a partir de uma cópia do Struct brasil2021, com instruções posteriores alterando o ano e população correspondentes.

O resultado da execução deste código pode ser visualizado na imagem a seguir:

Este exemplo foi disponibilizado também no GitHub:

https://github.com/renatogroffe/DotNet6-CSharp10-RecordStructs

Outra novidade do C# 10 está na capacidade de criarmos Structs imutáveis, através da implementação de Readonly Record Structs.

É o que demonstra a versão refatorada de Demografia na listagem a seguir, com seus dados definidos como Init-only Properties:

A tentativa de atribuir um valor após a criação/inicialização resultará em um erro como o da imagem seguinte:

O Struct brasil2000 no próximo exemplo foi criado e teve seus valores atribuídos por meio do construtor default de Demografia, ao passo que brasil1970 e brasil2021 tomaram o mesmo por base com a redefinição de valores via expressão with. Novamente nos valemos aqui para a declaração de Structs de recursos anteriormente disponíveis apenas para Records:

Teremos então como resultado da execução deste código:

Este exemplo pode ser encontrado no seguinte repositório do GitHub:

https://github.com/renatogroffe/DotNet6-CSharp10-ReadonlyRecordStructs

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

E aproveito este espaço para um convite…

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

A Microsoft tem investido muito no .NET como uma plataforma 100% aderente ao Cloud Native. Mas o que significa isso? O que muda quando pensamos em aplicações Cloud Native? Onde mora o benefício em se pensar em soluções deste tipo?

Projetos open source, Microservices, containers, Kubernetes e muito mais!

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

https://bit.ly/live-cloud-native-dotnet-2ed

--

--

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