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

时间:2017-10-03 04:13:55

标签: c# expression

DateTime tempDate = calculatesomedatetime();
someDateTimeControl.Value = null; //no issue
someDateTimeControl.Value = (tempDate > DateTime.MinValue)? tempDate : null;
  

无法确定条件表达式的类型,因为System.DateTime和null

之间没有隐式转换

第3行告诉我这样的错误,我不明白比较是(tempDate > DateTime.MinValue)null只是价值分配。为什么编译器会将此解释为错误?

但是,如果我写如下,它没有问题

if(tempDate > DateTime.MinValue)
{
    someDateTimeControl.Value = tempDate;
}else
{
    someDateTimeControl.Value = null;
}

2 个答案:

答案 0 :(得分:7)

问题在于三元运作。您正在将数据类型从DateTime更改为可为空的DateTime。三元操作要求您在冒号之前和之后返回相同的数据类型。做这样的事情会起作用:

someDateTimeControl.Value = (tempDate > DateTime.MinValue) ? (DateTime?)tempDate : null;

答案 1 :(得分:1)

将两边都放到可以为空的DateTime,这样两边都返回相同的类型。

someDateTimeControl.Value = (tempDate > DateTime.MinValue)? (DateTime?)tempDate : (DateTime?)null;