在下面的代码中,我希望 var
被解析为 Int64
,但它被解析为 double
。为什么会这样?
string a = "1234";
bool asInt = true;
var b = (asInt) ? Int64.Parse(a) : Double.Parse(a) ;
Console.WriteLine(b.GetType());
最佳答案
存在从 Int64
到 Double
的隐式转换,但不是另一种方式(由于该方向可能会丢失精度)。
由于条件的两个“分支”需要解析为同一类型,b
的类型最终被推断为 Double
。
关于c# - 为什么 var 被解析为 Double 而不是 Long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276876/