为什么这个条件运算符错误?

时间:2011-05-05 11:56:42

标签: c# conditional-operator

  

可能重复:
  Conditional operator assignment with Nullable<value> types?

您好, 为什么这不起作用?

  DateTime? SomeNullableDateTime = string.IsNullOrEmpty("") ? null : Convert.ToDateTime("01/02/1982");  

某处出错了吗?问题似乎是null,因为

  DateTime? SomeNullableDateTime = string.IsNullOrEmpty("") ? Convert.ToDateTime("01/02/1982") : Convert.ToDateTime("01/02/1982"); 

工作正常..

由于

2 个答案:

答案 0 :(得分:2)

两个条件值都必须属于同一类型,或允许从一种类型到另一种类型的隐式转换,如下所示:

DateTime? SomeNullableDateTime = string.IsNullOrEmpty("") ? (DateTime?)null : Convert.ToDateTime("01/02/1982");

可以找到更多信息here,但总结一下:

  

first_expression的类型   和second_expression必须是   相同,或隐式转换必须   从一种类型存在到另一种类型。

答案 1 :(得分:0)

因为nullConvert.ToDateTime不是同一类型。

您可以使用:

DateTime? SomeNullableDateTime = string.IsNullOrEmpty("") ? (DateTime?)null : new DateTime?(Convert.ToDateTime("01/02/1982"));