DateTime tempDate = calculatesomedatetime();
someDateTimeControl.Value = null; //no issue
someDateTimeControl.Value = (tempDate > DateTime.MinValue)? tempDate : null;
Run Code Online (Sandbox Code Playgroud)
无法确定条件表达式的类型,因为System.DateTime和null之间没有隐式转换
第3行给我这样的错误,我不理解为比较(tempDate > DateTime.MinValue),null只是价值分配.为什么编译器会将此解释为错误?
但是,如果我写如下,它没有问题
if(tempDate > DateTime.MinValue)
{
someDateTimeControl.Value = tempDate;
}else
{
someDateTimeControl.Value = null;
}
Run Code Online (Sandbox Code Playgroud)
Mid*_*das 12
问题在于三元运作.您正在将数据类型从DateTime更改为可为空的DateTime.三元操作要求您在冒号之前和之后返回相同的数据类型.做这样的事情会起作用:
someDateTimeControl.Value = (tempDate > DateTime.MinValue) ? (DateTime?)tempDate : null;
Run Code Online (Sandbox Code Playgroud)