C# · Intermediário · Inglês · Técnico
record
Tipo (classe por padrão) com igualdade por valor, ToString legível, with expression e construtor posicional concisos, pensado para dados imutáveis.
Onde usar
Ótimo para DTOs, eventos e value objects: dois records com os mesmos dados são iguais. Em EF Core, porém, entidades com identidade normalmente continuam sendo classes.
Em código
var a = new Ponto(1, 2);
var b = new Ponto(1, 2);
Console.WriteLine(a == b); // True
Console.WriteLine(a);
// Ponto { X = 1, Y = 2 }
record Ponto(int X, int Y);Exemplos
Make the DTO a record so equality works by value.
Faça o DTO virar um record para a igualdade ser por valor.
Two records with the same data are equal.
Dois records com os mesmos dados são iguais.
Cuidado
Não é automaticamente imutável de ponta a ponta: as propriedades posicionais são init-only, mas uma lista dentro dele continua mutável e é comparada por referência.
Sinônimos
record class