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