Teilen über


Das Set-Schlüsselwort (C#-Referenz)

Das Schlüsselwort set definiert eine Accessor-Methode in einer Eigenschaft oder einem Indexer, die der Eigenschaft oder dem Indexer-Element einen Wert zuweist. Weitere Informationen und Beispiele finden Sie unter "Eigenschaften", "Automatisch implementierte Eigenschaften" und "Indexer".

Die C#-Sprachreferenz dokumentiert die zuletzt veröffentlichte Version der C#-Sprache. Außerdem enthält sie eine erste Dokumentation zu Funktionen in der öffentlichen Vorschau für die kommende Sprachversion.

In der Dokumentation werden alle Features identifiziert, die in den letzten drei Versionen der Sprache oder in der aktuellen öffentlichen Vorschau eingeführt wurden.

Tipp

Informationen dazu, wann ein Feature erstmals in C# eingeführt wurde, finden Sie im Artikel zum Versionsverlauf der C#-Sprache.

Verwenden Sie für einfache Fälle, in denen die Accessoren und set Eigenschaften einer Eigenschaft get keinen anderen Vorgang ausführen als das Festlegen oder Abrufen eines Werts in einem privaten Sicherungsfeld, automatisch implementierte Eigenschaften. Im folgenden Beispiel wird eine automatisch implementierte Hours Eigenschaft implementiert.

class TimePeriod3
{
    public double Hours { get; set; }
}

Wichtig

Sie können keine automatisch implementierten Eigenschaften für Schnittstelleneigenschaftendeklarationen oder die Implementierungsdeklaration für eine partielle Eigenschaft verwenden. Der Compiler interpretiert die Syntax, die einer automatisch implementierten Eigenschaft entspricht, als deklarierende Deklaration, nicht als implementierende Deklaration.

Möglicherweise müssen Sie einen der Accessor-Gremien implementieren. Das field Schlüsselwort, das in C# 14 hinzugefügt wurde, deklariert eine feldbasierte Eigenschaft. Verwenden Sie eine feldgesicherte Eigenschaft, damit der Compiler einen Accessor generieren kann, während Sie das andere manuell schreiben. Verwenden Sie das field Schlüsselwort, um auf das compilersynthetisierte Sicherungsfeld zuzugreifen:

class TimePeriod4
{
    public double Hours {
        get;
        set => field = (value >= 0)
            ? value
            : throw new ArgumentOutOfRangeException(nameof(value), "The value must not be negative");
    }
}

Der set-Accessor besteht häufig aus einer einzelnen Anweisung, die einen Wert zurückgibt (wie im vorherigen Beispiel gezeigt). Sie können die set-Zugriffsmethode als Ausdruckskörpermember implementieren. Im folgenden Beispiel wird sowohl der get- als auch der set-Accessor als Ausdruckskörpermember implementiert.

class TimePeriod2
{
    private double _seconds;

    public double Seconds
    {
        get => _seconds;
        set => _seconds = value;
    }
}

Im folgenden Beispiel werden ein get- und ein set-Accessor für eine Eigenschaft namens Seconds definiert. Im Beispiel wird ein privates Feld mit dem Namen _seconds verwendet, um den Eigenschaftswert zu unterstützen.

class TimePeriod
{
    private double _seconds;

    public double Seconds
    {
        get { return _seconds; }
        set
        {
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(value), "The value of the time period must be non-negative.");
            }
            _seconds = value;
        }
    }
}

C#-Sprachspezifikation

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

Weitere Informationen