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



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

但是,如果我写如下,它没有问题
if(tempDate > DateTime.MinValue)
{
    someDateTimeControl.Value = tempDate;
}else
{
    someDateTimeControl.Value = null;
}

最佳答案

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

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

09-20 04:25