2014-10-03 2 views
0

Может ли кто-нибудь сказать мне, почему это не будет компилироваться?Условный оператор с DateTime? не будет компилировать

DateTime? completedDT; 
bool completed = false; 
completedDT= completed ? DateTime.Now : null; 

я бы подумал, что, как он писал в обнуляемом объект (DateTime?) использование нулевого будет приемлемым. Вместо этого я получаю эту ошибку:

Error 19 Type of conditional expression cannot be determined because there is no implicit conversion between 'System.DateTime' and 'null'

+0

капитал DT vs dt in completedDT? –

+0

Вы должны явно указать один из операндов в условном выражении на 'DateTime? ', Например' finishedDT = completed? DateTime.Now: (DateTime?) Null; ' – Habib

+0

Включить правую сторону в' DateTime? ' –

ответ

1

Есть несколько вариантов:

completedDT= completed ? DateTime.Now : new DateTime?(); 
completedDT= completed ? DateTime.Now : (DateTime?)null; 
completedDT= completed ? DateTime.Now : default(DateTime?); 

Благодаря в C.Evenhuis для опции default().

+0

Третий вариант: 'default (DateTime?)'. –

+0

Спасибо большое, ребята! –

+0

Вы также можете использовать 'DateTime.Now' для' datetime? '(Но не спрашивайте меня, есть ли перфоманс) – wgraham

Смежные вопросы