2014-10-03 26 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

capital DT and dt in completedDT? – 2014-10-03 14:35:29

+0

你必須顯式地將條件語句中的一個操作數轉換爲'DateTime?',比如'completedDT = completed? DateTime.Now:(DateTime?)null;' – Habib 2014-10-03 14:35:39

+0

將右側投射到'DateTime?' – 2014-10-03 14:35:48

回答

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?)'。 – 2014-10-03 14:37:22

+0

非常感謝你們! – 2014-10-03 14:37:37

+0

您也可以將'DateTime.Now'強制轉換爲'datetime?'(但不要問我是否會產生性能影響) – wgraham 2014-10-03 14:52:09