C# · Avançado · Inglês · Técnico
readonly struct
Struct marcada com readonly, cujos membros são todos somente leitura; o compilador garante a imutabilidade e evita cópias defensivas ao passar por in ou ao acessar um campo readonly.
Onde usar
Em tipos pequenos de valor como dinheiro ou coordenadas, evita bugs de mutação e melhora o desempenho em caminhos quentes. Sem readonly, chamar um membro em um campo readonly de struct força o compilador a copiar a struct antes.
Em código
readonly struct Dinheiro {
public decimal Valor { get; }
public Dinheiro(decimal v) => Valor = v;
public Dinheiro Soma(Dinheiro o)
=> new(Valor + o.Valor);
}Exemplos
Make it a readonly struct so the compiler skips defensive copies.
Faça dela uma readonly struct para o compilador pular as cópias defensivas.
A readonly struct can be passed by in without a copy.
Uma readonly struct pode ser passada por in sem cópia.
Cuidado
Não basta marcar os campos como readonly em uma struct comum: o compilador ainda assume que os métodos podem mutar e faz cópias defensivas.