Вопрос

На этот вопрос уже есть ответ здесь:

Я хотел спросить о ?? входит в систему C# код.Для чего это нужно?И как я могу это использовать?

О чем int??Является ли это обнуляемым значением int?

Смотрите также:

??Нулевой оператор коалесценции —> Что означает коалесценция?

Это было полезно?

Решение

Это называется "оператор объединения нулей" и работает примерно так:

Вместо того, чтобы делать:

int? number = null;
int result = number == null ? 0 : number;

Теперь вы можете просто сделать:

int result = number ?? 0;

Другие советы

Это тот самый нулевой объединяющий оператор.Он был введен в C # 2.

Результат выражения a ?? b является a если это не равно нулю, или b в противном случае. b не оценивается, если в этом нет необходимости.

Две приятные вещи:

  • Общий тип выражения - это тип второго операнда, что важно, когда вы используете типы значений с нулевым значением:

    int? maybe = ...;
    int definitely = maybe ?? 10;
    

    (Обратите внимание, что вы не можете использовать ненулевой тип значения в качестве первого операнда - это было бы бессмысленно.)

  • Правила ассоциативности означают, что вы можете очень легко связать это в цепочку.Например:

    string address = shippingAddress ?? billingAddress ?? contactAddress;
    

При этом будет использоваться первое ненулевое значение из адреса доставки, выставления счета или контакта.

Это оператор объединения.По сути, это сокращение для следующего

x ?? new Student();
x != null ? x : new Student();

Документация MSDN по оператору

Это новый оператор объединения нулей.

Тот самый ??operator возвращает левый операнд, если он не равен null, или же он возвращает правый операнд.

Вы можете прочитать об этом здесь:http://msdn.microsoft.com/en-us/library/ms173224 (ПРОТИВ 80).aspx

Это короткий путь для:

Text = (category == null ? "Home" : category);

это оператор коалесцирования.он вернет другое значение, если первое значение равно null

string value1 = null;
string value2 = "other";

string value3 = value1 ?? value2; // assigns "other" to value 3

он проверяет, имеет ли категория значение null - в этом случае значение null заменяется на "Home".

Одно из моих любимых применений оператора объединения null - избегать операторов if в моем коде (я думаю, что операторы if в большинстве случаев уродливы и просто загромождают ситуацию).Например, возьмем типичный сценарий, в котором можно было бы выбрать загрузку чего-либо из кэша, если таковой имеется, в противном случае загрузить из базы данных и заполнить кэш.

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;

    if (data == null) {
        data = DAL.GetData(some parameters...);
        HttpRuntime.Cache.Add("key", data, ....);
    }

    return data;
}

Для меня это уродливый код.Возможно, я немного анален, но почему бы вместо этого не реорганизовать его на это?

private SomeData GetDataAndCache() {
    var data = DAL.GetData(some parameters...);
    HttpRuntime.Cache.Add("key", data, ....);
    return data;
}

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;
    return data ?? GetDataAndCache();
}

Он более точно соответствует SRP и является более чистым и легким для чтения, IMO.Каждая из функций выполняет ровно одну четко идентифицируемую функцию.

если категория равна нулю, Текст станет "Домашним".

Возвращает первое ненулевое значение.Удобно.

??Оператор объединения нулей

инт?является обнуляемым int, что означает, что он может иметь значения обычного int и null .Читать это для получения подробной информации.

Это тот самый оператор объединения нулей .Он используется с обнуляемые типы (помимо всего прочего, извините :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top