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
为什么我们需要在这里进行投射,虽然第一个例子也是如此?
答案 0 :(得分:1)
原因是三元运算符必须在两个分支中使用SAME类型。所以true和false返回值必须是int?或者int。不能使用两种不同的类型。