Поделиться через


?? Оператор (справочник по C#)

Оператор ?? вызывается null-объединя оператором и используется для указания значений по умолчанию для типов значений и ссылочных типов, допускающих значение null.Возвращает левый операнд, если операнд не равен null; в противном случае он возвращает правый операнд.

Заметки

Допускающий значение NULL тип может содержать значение или его значение может быть не определено.Оператор ?? определяет значение по умолчанию, которое будет возвращаться в том случае, если допускающему значение NULL типу будет присвоено любое другое значение.Если попытаться присвоить не допускающему значение NULL типу тип, допускающий значение NULL, без использования оператора ??, то будет сгенерирована ошибка времени компиляции.Если используется приведение типов и допускающий значение NULL тип в данный момент не определен, то будет выдано исключение InvalidOperationException.

Дополнительные сведения см. в разделе Типы, допускающие значения NULL (Руководство по программированию на C#).

Результат оператора ??не может рассматриваться как константа, даже если оба его аргумента являются константами.

Пример

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

См. также

Ссылки

Операторы C#

Типы, допускающие значения NULL (Руководство по программированию на C#)

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#

Делает точного поднятая» средний «?