ExpertiDict

C# · Avançado · Inglês · Técnico

readonly struct

/ˈridˌoʊnli strʌkt/substantivo

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.

Veja também

Todos os termos de C#