带DateTime的条件运算符?赢得';t编译

本文关键字:编译 赢得 DateTime 条件运算符 | 更新日期: 2023-09-27 18:25:25

有人能告诉我为什么不编译吗?

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

我本以为,在写入可为null的对象(DateTime?)时,使用null是可以接受的。相反,我得到了这个错误:

错误19无法确定条件表达式的类型,因为"System.DateTime"answers"null"之间没有隐式转换

带DateTime的条件运算符?赢得';t编译

有几个选项:

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

感谢C.Evenhuis提供default()选项。