???? Operator (C#-Referenz)Operator (C# Reference)

Der Operator ?? wird NULL-Sammeloperator genannt.The ?? operator is called the null-coalescing operator. Der linke Operand wird zurückgegeben, falls dieser nicht NULL ist. Andernfalls wird der rechte Operand zurückgegeben.It returns the left-hand operand if the operand is not null; otherwise it returns the right hand operand.

HinweiseRemarks

Ein Typ, der NULL-Werte zulässt, kann einen Wert aus der Domäne des Typs repräsentieren, oder der Wert kann nicht definiert sein (in diesem Fall ist der Wert NULL).A nullable type can represent a value from the type’s domain, or the value can be undefined (in which case the value is null). Sie können mit der syntaktischen Ausdruckskraft des ??-Operators einen entsprechenden Wert (den rechten Operand) zurückgeben, wenn der linke Operand einen Typ aufweist, der NULL-Werte zulässt und dessen Wert NULL ist.You can use the ?? operator’s syntactic expressiveness to return an appropriate value (the right hand operand) when the left operand has a nullable type whose value is null. 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.If you try to assign a nullable value type to a non-nullable value type without using the ?? operator, you will generate a compile-time error. Wenn bei einer Typumwandlung der Werttyp, der auf NULL festgelegt werden kann, aktuell nicht definiert ist, wird eine InvalidOperationException-Ausnahme ausgelöst.If you use a cast, and the nullable value type is currently undefined, an InvalidOperationException exception will be thrown.

Weitere Informationen finden Sie unter Nullable-Typen.For more information, see Nullable Types.

Das Ergebnis eines ??-The result of a ?? Operators wird nicht als Konstante angesehen, auch wenn beide Argumente Konstanten sind.operator is not considered to be a constant even if both its arguments are constants.

BeispielExample

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

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        int? x = null;

        // Set y to the value of x if x is NOT null; otherwise,
        // if x == null, set y to -1.
        int y = x ?? -1;

        // Assign i to return value of the method if the method's result
        // is NOT null; otherwise, if the result is null, set i to the
        // default value of int.
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // Display the value of s if s is NOT null; otherwise, 
        // display the string "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-OperatorenC# Operators
Typen mit NullwertNullable Types
What exactly does 'lifted' mean? (Was genau bedeutet „Lifted“?)What Exactly Does 'Lifted' mean?