这是我的代码:
DateTime? test;
test = ((objectParsed.birthday != null) ? DateTime.Parse((string)objectParsed.birthday : null));
为什么我不能将该变量设置为null
?
答案 0 :(得分:3)
除了与Nullable<T>
(在这种情况下为DateTime?
)有关之外,错误正在此处发生:
((objectParsed.birthday != null) ? DateTime.Parse((string)objectParsed.birthday : null))
请注意,此代码中没有提及可为空的DateTime
。在将此代码的结果分配给可空DateTime
之前,需要对此代码进行评估。它不可能,因为你看到的错误。
正在使用的运算符(: ?
)需要能够从操作的所有参数中推断出类型,并且这些类型需要能够匹配。在这里,您传递的是DateTime
和null
无法匹配的内容。尝试转换其中一个参数:
((objectParsed.birthday != null) ? (DateTime?)DateTime.Parse((string)objectParsed.birthday : null))
答案 1 :(得分:1)
在这种情况下,您不能设置null,因为三元运算符必须返回相同类型的值 试试这个:
test = (objectParsed.birthday != null) ? (DateTime?)DateTime.Parse((string)objectParsed.birthday): null;
答案 2 :(得分:0)
尝试
test = ((objectParsed.birthday != null) ? DateTime.Parse((string)objectParsed.birthday): null;
说明:三元运算符的结构是:
variable = (condition)?(value if yes):(value if no);