Что такое использование "??" [Дубликат
Вопрос
Возможный дубликат:
Что это "??" Оператор для?
Пожалуйста, объясните мне, что такое использование "??" В следующем коде и что такое "??" используется для.
if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)
{e.description = "Дата заказа не должна быть в будущем."; вернуть ложь; }
Приведенный выше код в http://nettiers.com/entitylayer.ashx.
Спасибо.
Решение
(Это дубликат, но трудно искать, поэтому я счастлив достаточно, чтобы предоставить больше еще одну цель для будущих поисков ...)
Это Оператор Null-Coalescing. Отказ По сути, это оценивает первый операнд, и если результат является нулевым (либо нулевая ссылка или нулевое значение для нулевого типа значения), то он оценивает второй операнд. Результатом является то, что операнд был оценен последним, эффективно.
Обратите внимание, что из-за его ассоциации вы можете написать:
int? x = E1 ?? E2 ?? E3 ?? E4;
если E1
, E2
, E3
а также E4
все выражения типа int?
- начнется с E1
и прогресс, пока он не найдет ненулевое значение.
Первый операнд должен быть нумеративным типом, но E второй операнд может быть ненуженным, и в этом случае общий тип выражения не отнурительна. Например, предположим, что E4 является выражением типа int
(Но все остальные все еще int?
Тогда вы можете сделать x
Ненужные:
int x = E1 ?? E2 ?? E3 ?? E4;