C# 10 -  Criando tipos anônimos com a expressão 'with'


Hoje veremos o novo recurso Anonymous 'with' Expressions  do C# 10.

O novo recurso do C# 10 chamado Anonymous 'with' Expressions de permite usar a palavra-chave with para criar um novo objeto anônimo a partir de outro objeto.

A palavra chave 'with' foi introduzida na versão 9.0 do C# e permite criar objetos record a partir de outros objetos record, criando uma cópia do record e alterando uma ou mais propriedades.

Exemplo :  C# 9

using System;
var cachorro = new Animal("Canelinha", "Cachorro", 7);
var gato = cachorro with { Tipo = "Gato" };
Console.WriteLine(gato.Nome); //Canelinha
Console.ReadKey();
public record Animal(string Nome, string Tipo, int Idade);

 

No entanto não podíamos usar este recurso com objetos anônimos.

Por exemplo, se eu tiver o seguinte tipo anônimo :


 var aluno = new { Id = 1, Nome = "Ana", Idade = 7 , Sexo="M"};     
 

Para criar um novo objeto anônimo com as mesmas propriedades usando o tipo anterior como modelo eu teria que fazer isso de forma indireta usando o seguinte código :


   var aluna = new { aluno.Id, Nome = "Paulo", aluno.Idade , Sexo = "F" };          
 

Vejamos como isso foi melhorado no  C# 10.

Exemplo :  C# 10

Agora no C# 10 podemos usar a palavra-chave with para criar um novo objeto anônimo a partir de outro objeto anônimo :


   var
aluno = new { Id = 1, Nome = "Ana", Idade = 7 , Sexo = "M"};

   var aluna =
aluno with { Sexo = "F", Idade= 9 };
 

Em essência, a palavra-chave with agora funciona da mesma maneira em objetos record e em objetos anônimos.

E estamos conversados...

"Rogo-vos, pois, irmãos, pela compaixão de Deus, que apresenteis os vossos corpos em sacrifício vivo, santo e agradável a Deus, que é o vosso culto racional."
Romanos 12:1

Referências:


José Carlos Macoratti