有人可以解释为什么这在C#.NET 2.0中有效:
Nullable<DateTime> foo;
if (true)
foo = null;
else
foo = new DateTime(0);
Run Code Online (Sandbox Code Playgroud)
......但这不是:
Nullable<DateTime> foo;
foo = true ? null : new DateTime(0);
Run Code Online (Sandbox Code Playgroud)
后一种形式给我一个编译错误"无法确定条件表达式的类型,因为'<null>'和'System.DateTime'之间没有隐式转换."
并不是说我不能使用前者,但第二种风格与我的其余代码更加一致.
一个问题在这里提出了一个问题对我来说:
例如x = y ? a : b
,c#中的三元运算使用任一类型a
或b
确定三元表达式的类型.为什么不使用这种类型x
?在任何给定的情况下,是否有可以使用的预期返回类型?
编辑:为了清楚起见,当我说
为什么不使用这种类型
x
?
我想我的意思是
为什么不首先尝试使用这种类型
x
?
正如文件所述:
这个过程可以从以下开始: