Operator ?? (odwołanie w C#)

Operator ?? jest nazywany operatorem łączącym wartość null. Zwraca argument operacji z lewej strony, jeśli ma on wartość inną niż null; w przeciwnym razie zwraca argument operacji po prawej stronie.

Uwagi

Typ dopuszczający wartość null może reprezentować wartość z domeny typu albo wartość może być niezdefiniowana (w tym przypadku wartość jest równa null).Wyrazistości syntaktycznej operatora ?? można użyć w celu zwrócenia odpowiedniej wartości (argument operacji po prawej stronie), gdy argument operacji po lewej stronie należy do typu dopuszczającego wartości null i ma wartość null.Próba przypisania dopuszczającego wartości null typu wartości do niedopuszczającego wartości null typu wartości bez użycia operatora ?? spowoduje wygenerowanie błędu podczas kompilacji.Jeśli jest używane rzutowanie, a dopuszczający wartości null typ wartości nie jest obecnie zdefiniowany, zostanie zgłoszony wyjątek InvalidOperationException.

Aby uzyskać więcej informacji, zobacz Typy dopuszczające wartości zerowe (Przewodnik programowania w języku C#).

Wynik użycia operatora ?? nie jest traktowany jako stała, nawet jeśli oba argumenty są stałymi.

Przykład

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");
    }
}

Zobacz też

Informacje

Operatory C#

Typy dopuszczające wartości zerowe (Przewodnik programowania w języku C#)

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#

Co dokładnie oznacza „podniesiony”?