init (C#-Referenz)

Mit dem init-Schlüsselwort wird eine Zugriffsmethode in einer Eigenschaft oder einem Indexer definiert. Ein reiner init-Setter weist der Eigenschaft oder dem Indexerelement nur während der Objekterstellung einen Wert zu. Dadurch wird Unveränderlichkeit erzwungen, sodass das Objekt nach der Initialisierung nicht mehr geändert werden kann.

Weitere Informationen und Beispiele finden Sie unter Eigenschaften, Automatisch implementierte Eigenschaften und Indexers.

Im folgenden Beispiel werden eine get- und eine init-Zugriffsmethode für eine Eigenschaft namens YearOfBirth definiert. Im Beispiel wird ein privates Feld mit dem Namen _yearOfBirth verwendet, um den Eigenschaftswert zu unterstützen.

class Person_InitExample
{
     private int _yearOfBirth;

     public int YearOfBirth
     {
         get { return _yearOfBirth; }
         init { _yearOfBirth = value; }
     }
}

Der init-Accessor besteht häufig aus einer einzelnen Anweisung, die einen Wert zurückgibt (wie im vorherigen Beispiel gezeigt). Beachten Sie, dass wegen init Folgendes nicht funktioniert:

var john = new Person_InitExample
{
    YearOfBirth = 1984
};

john.YearOfBirth = 1926; //Not allowed, as its value can only be set once in the constructor

Eine init-Zugriffsmethode erzwingt nicht, dass Aufrufer die Eigenschaft festlegen. Stattdessen ermöglicht sie einem Objektinitialisierer, den Anfangswert festzulegen, und verhindert eine spätere Änderung. Sie können den required-Modifizierer hinzufügen und damit erzwingen, dass Aufrufer eine Eigenschaft festlegen müssen. Das folgende Beispiel zeigt dasselbe Verhalten:

class Person_InitExampleNullability
{
    private int? _yearOfBirth;

    public int? YearOfBirth
    {
        get => _yearOfBirth;
        init => _yearOfBirth = value;
    }
}

Die init-Zugriffsmethode kann als Ausdruckskörperelement verwendet werden. Beispiel:

class Person_InitExampleExpressionBodied
{
    private int _yearOfBirth;

    public int YearOfBirth
    {
        get => _yearOfBirth;
        init => _yearOfBirth = value;
    }
}

Die init-Zugriffsmethode kann auch in automatisch implementierten Eigenschaften verwendet werden, wie der folgende Beispielcode veranschaulicht:

class Person_InitExampleAutoProperty
{
    public int YearOfBirth { get; init; }
}

C#-Sprachspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch