Operator ?? -- (C#-Referenz)

Aktualisiert: November 2007

Der ??-Operator wird als NULL-Sammeloperator bezeichnet und wird zum Definieren eines Standardwerts für Werttypen verwendet, die keine NULL-Werte zulassen, sowie für Referenztypen. Der linke Operand wird zurückgegeben, falls dieser nicht NULL ist. Andernfalls wird der rechte Operand zurückgegeben.

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 eine 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

Konzepte

C#-Programmierhandbuch

Referenz

C#-Operatoren

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

Weitere Ressourcen

C#-Referenz

Was genau bedeutet 'Transformiert'?