(я предполагаю, что на самом деле у вас есть условный оператор, который делает гораздо более смысл -. Text
предположительно является строковое свойство, и это не имеет особого смысла уступать, что к DateTime?
переменной)
Компилятор не знает тип условного выражения. Не учитывается тот факт, что есть назначение переменной DateTime?
- она просто пытается найти нужный тип.
Теперь типа выражения должен быть либо типа LHS, или типа ОРЗ ... но:
null
не имеет типа, так это не может быть тип RHS
- Нет конверсии от
DateTime
до null
, поэтому он не может быть типом LHS.
Самый простой способ исправить это, чтобы дать РИТ реальный тип, так что любой из:
default(DateTime?)
(DateTime?) null
new DateTime?()
Конечно, можно сделать LHS типа DateTime?
вместо этого.
контратип http://stackoverflow.com/questions/858080/nullable-types-and-the-ternary-operator-why-wont-this-work –
Левая сторона проверяется ** после ** правая сторона проверена! Таким образом, компилятор не знает, что он должен быть «DateTime?», И поскольку они не являются одним и тем же типом, он пытается их взаимно преобразовать. Если вы конвертируете одно из значений в 'DateTime? ', Оно будет работать. –