Record | with
- Record | with
-
Record é do tipo de referência (fica na heap)
-
Record struct é do tipo valor (fica na stack)
-
Cria dados imutáveis
record Person(string FirstName, string LastName);
//dessa forma os dados precisam ser passados quando instânciar a classe
// e não poderão ser alterados
//estilo posicionalpublic record Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
//se eu declarar record assim, eles não serão imutáveis
//Usando a criação nominal, então, podemos dizer que os registros não são imutáveis por padrão .
public record Person
{
public string FirstName { get; init; }
public string LastName { get; init; }
}
//com init ai eles se tornam imutáveis -
Cria um clone
var book = book3 with {Language = "Italian"};
Vantagens de se usar records
- Imutabilidade e Concorrência
- A principal vantagem de usar records em cenários concorrentes é a imutabilidade. Quando um objeto é imutável, seus dados não podem ser alterados após sua criação. Isso significa que, uma vez que um record é criado, não há o risco de alterações simultâneas de múltiplos threads interferirem uns com os outros, o que ajuda a evitar condições de corrida e outros problemas típicos de concorrência.
- Imutabilidade por padrão com
init - Comparação por valor (
Equalse==compararam os valores, não a referência)