ExpertiDict

C# · Intermediário · Inglês · Técnico

record

/ˈrɛkɚd/substantivo

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

Veja também

Todos os termos de C#