C#:为什么从Int显式转换为<nullable> int?

时间:2017-11-23 11:43:23

标签: c# .net

map.invalidateSize()

上面的代码段很好,会将 int a = 1; int? b = a; Console.WriteLine(b); 直接转换为int,不需要显式转换

但是

int?

会有编译时错误。

解决这个问题我们需要转发List<int> temp = new List<int>{1}; int? valueVariable = temp!=null && temp.Count>0 ? temp[0] : null ; Console.WriteLine(valueVariable);

int?

https://dotnetfiddle.net/0x7ckL

为什么我们需要在这里进行投射,虽然第一个例子也是如此?

1 个答案:

答案 0 :(得分:1)

原因是三元运算符必须在两个分支中使用SAME类型。所以true和false返回值必须是int?或者int。不能使用两种不同的类型。