Вопрос

Возможный дубликат:
Что это "??" Оператор для?

Пожалуйста, объясните мне, что такое использование "??" В следующем коде и что такое "??" используется для.

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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top