可能重复:
三元语句中没有隐式 int -> 短转换
因此,我了解了 C# 三元运算符中类型转换和类型推断的基础知识,这主要归功于 Eric Lippert对这个问题的回答。但我仍然不明白的是我下面的内容。
我想我知道 C# 假设零是 anint
因为这是默认值,所以当我尝试将 an 分配int
给short
变量时会引发错误:
short recordNumber = Convert.IsDBNull(dr["record_number"]) ? 0
: Convert.ToInt16(dr["record_number"]);
抛出此错误:
Cannot implicitly convert type 'int' to 'short'.
An explicit conversion exists (are you missing a cast?)
这就是 VS10 正在寻找的:
short recordNumber = Convert.IsDBNull(dr["record_number"]) ? (short)0
: Convert.ToInt16(dr["record_number"]);
我想了解的是为什么选择 0int
而不是short
? 如果它被选为 ashort
那么这将使它更普遍地“可分配”。我失踪了有什么原因吗?