1

这是我的代码:

DateTime? test;
test = ((objectParsed.birthday != null) ? DateTime.Parse((string)objectParsed.birthday : null));

为什么我不能将该变量设置为null

4

3 回答 3

3

除了与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))
于 2013-10-30T10:22:23.410 回答
1

在这种情况下您不能设置 null 因为三元运算符必须返回相同类型的值试试这个:

test = (objectParsed.birthday != null) ? (DateTime?)DateTime.Parse((string)objectParsed.birthday): null;
于 2013-10-30T10:20:28.510 回答
0

尝试

 test = ((objectParsed.birthday != null) ? DateTime.Parse((string)objectParsed.birthday): null;

解释:三元运算符的结构是:

variable = (condition)?(value if yes):(value if no);
于 2013-10-30T10:17:55.850 回答