为什么我不能参加这项任务?

时间:2013-10-30 10:15:20

标签: c# datetime null

这是我的代码:

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

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

3 个答案:

答案 0 :(得分:3)

除了与Nullable<T>(在这种情况下为DateTime?)有关之外,错误正在此处发生:

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

请注意,此代码中没有提及可为空的DateTime。在将此代码的结果分配给可空DateTime之前,需要对此代码进行评估。它不可能,因为你看到的错误。

正在使用的运算符(: ?)需要能够从操作的所有参数中推断出类型,并且这些类型需要能够匹配。在这里,您传递的是DateTimenull无法匹配的内容。尝试转换其中一个参数:

((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);