C# · Intermediário · Inglês · Técnico
init accessor
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