?? Operator (C#-Referenz)

Der Operator den Operator wird ?? NULL-verschmelzenden aufgerufen und wird verwendet, um den Standardwert für auf NULL festlegbare Werttypen und Referenztypen zu definieren.Er gibt den linken Operanden zurück, wenn der Operand nicht NULL ist. andernfalls gibt er den rechten Operanden zurück.

Hinweise

Ein Typ, der auf NULL festgelegt werden kann, kann einen Wert enthalten oder nicht definiert sein.Der Operator ?? definiert die Standardwerte, die zurückgegeben werden sollen, wenn ein Typ, der auf NULL festgelegt werden kann, einem Typ zugewiesen wird, der nicht auf NULL festgelegt werden kann.Der Versuch, einen Werttyp, der auf NULL festgelegt werden kann, einem Werttyp, der nicht auf NULL festgelegt werden kann, ohne Verwendung des Operators ?? zuzuweisen, verursacht einen Kompilierungsfehler.Wenn bei einer Typumwandlung der Werttyp, der auf NULL festgelegt werden kann, aktuell nicht definiert ist, wird eine InvalidOperationException-Ausnahme ausgelöst.

Weitere Informationen finden Sie unter Typen, die NULL-Werte zulassen (C#-Programmierhandbuch).

Das Ergebnis eines ??-Operators wird nicht als Konstante behandelt, auch wenn dessen zwei Argumente Konstanten sind.

Beispiel

class NullCoalesce
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        // ?? operator example.
        int? x = null;

        // y = x, unless x is null, in which case y = -1.
        int y = x ?? -1;

        // Assign i to return value of method, unless
        // return value is null, in which case assign
        // default value of int to i.
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // ?? also works with reference types. 
        // Display contents of s, unless s is null, 
        // in which case display "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

Siehe auch

Referenz

C#-Operatoren

Typen, die NULL-Werte zulassen (C#-Programmierhandbuch)

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

C#-Referenz

Was bedeuten“ transformierter „genau werden?