Ir para o conteúdo

Records

Os records são um recurso moderno do C# introduzido na versão 9.0, projetado para facilitar a criação de tipos imutáveis e focados em dados. Eles são particularmente úteis quando você deseja representar entidades que possuem propriedades, mas não comportamentos complexos.

Características Principais

  • Imutabilidade: Por padrão, as propriedades de um record são imutáveis. Isso significa que, uma vez criado, o estado do objeto não pode ser alterado.

  • Igualdade por Valor: Dois records são considerados iguais se todas as suas propriedades forem iguais, ao contrário das classes tradicionais, onde a igualdade é baseada na referência do objeto.

  • Sintaxe Concisa: A sintaxe para definir records é mais curta e clara, facilitando a leitura e manutenção do código.

Definindo um Record

public record Pessoa(string Nome, int Idade);

Neste exemplo, Pessoa é um record com duas propriedades: Nome e Idade.

Usando Records

Pessoa pessoa = new Pessoa("João", 30);
Console.WriteLine(pessoa.Nome); // Saída: João
Console.WriteLine(pessoa.Idade); // Saída: 30

Imutabilidade

// pessoa.Nome = "Maria"; // Isso causará um erro de compilação, pois
// as propriedades são imutáveis por padrão.

Igualdade por Valor

Pessoa pessoa1 = new Pessoa("João", 30);
Pessoa pessoa2 = new Pessoa("João", 30);
Console.WriteLine(pessoa1 == pessoa2); // Saída: True

Sintaxe Concisa

Pessoa pessoa = new Pessoa("João", 30);
Console.WriteLine(pessoa); // Saída: Pessoa { Nome = João, Idade = 30 }

Herança em Records

public record Funcionario(string Nome, int Idade, string Cargo) : Pessoa(Nome, Idade);

Neste exemplo, Funcionario herda de Pessoa, adicionando uma nova propriedade Cargo.

Modificação com with

Pessoa pessoa1 = new Pessoa("João", 30);
Pessoa pessoa2 = pessoa1 with { Idade = 31 }; // Cria uma nova
Console.WriteLine(pessoa2); // Saída: Pessoa { Nome = João, Idade = 31 }

instância com a Idade modificada

Conclusão

Os records são uma poderosa adição ao C#, proporcionando uma maneira eficiente e clara de trabalhar com dados imutáveis. Eles são ideais para cenários onde a integridade dos dados é crucial, como em aplicações financeiras, sistemas de inventário e muito mais. Ao utilizar records, você pode escrever código mais limpo, seguro e fácil de manter.