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#.

Vea también