init (Referencia de C#)
En C# 9 y versiones posteriores, la palabra clave init
define un método de descriptor de acceso en una propiedad o un indizador. Un establecedor de solo inicialización asigna un valor a la propiedad o al elemento indexador solo durante la construcción del objeto. Esto exige inmutabilidad, de modo que, una vez inicializado el objeto, no se puede volver a cambiar.
Para obtener más información y ejemplos, vea Propiedades, Propiedades autoimplementadas e Indexadores.
En el ejemplo siguiente se definen los descriptores de acceso get
y init
para una propiedad denominada Seconds
. Usa un campo privado denominado _seconds
para respaldar el valor de la propiedad.
class Person_InitExample
{
private int _yearOfBirth;
public int YearOfBirth
{
get { return _yearOfBirth; }
init { _yearOfBirth = value; }
}
}
A menudo, el descriptor de acceso init
consta de una única instrucción que asigna un valor, como en el ejemplo anterior. Tenga en cuenta que, debido a init
, lo siguiente no funcionará:
var john = new Person_InitExample
{
YearOfBirth = 1984
};
john.YearOfBirth = 1926; //Not allowed, as it's value can only be set once in the constructor
El init
descriptor de acceso se puede usar como miembro con forma de expresión. Ejemplo:
class Person_InitExampleExpressionBodied
{
private int _yearOfBirth;
public int YearOfBirth
{
get => _yearOfBirth;
init => _yearOfBirth = value;
}
}
El init
descriptor de acceso también se puede usar en propiedades implementadas automáticamente, como se muestra en el código de ejemplo siguiente:
class Person_InitExampleAutoProperty
{
public int YearOfBirth { get; init; }
}
Especificación del lenguaje C#
Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.