ExpertiDict

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

init accessor

/ˈɪnɪt ækˈsɛsɚ/substantivo

Acessador usado no lugar de set que só permite atribuir a propriedade na criação do objeto (construtor ou object initializer), tornando-a imutável depois.

Onde usar

É a forma de ter DTOs imutáveis com object initializer, sem construtor longo. Em code review, troque set por init quando o valor não deve mudar depois de criado; é a base das propriedades dos records posicionais.

Em código

var c = new Config { Porta = 8080 };
// c.Porta = 9;   // erro CS8852
Console.WriteLine(c.Porta);
class Config {
  public int Porta { get; init; }
}

Exemplos

Change set to init so nobody can modify it later.

Troque set por init para ninguém modificar depois.

The init accessor only works during object creation.

O init accessor só funciona durante a criação do objeto.

Cuidado

Não é readonly de verdade em execução: reflexão ou desserializadores ainda conseguem atribuir, e init não impede a mutação do conteúdo de coleções.

Sinônimos

init-only setter

Veja também

Todos os termos de C#