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