1

可能重复:
三元语句中没有隐式 int -> 短转换

因此,我了解了 C# 三元运算符中类型转换和类型推断的基础知识,这主要归功于 Eric Lippert对这个问题的回答。但我仍然不明白的是我下面的内容。

我想我知道 C# 假设​​零是 anint因为这是默认值,所以当我尝试将 an 分配intshort变量时会引发错误:

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那么这将使它更普遍地“可分配”。我失踪了有什么原因吗?

4

0 回答 0