可能重复:
No implicit int -> short conversion in ternary statement
因此,我理解了C#三元运算符中类型转换和类型推断的基本原理,这主要归功于Eric Lippert的回答to this question。但我仍然不理解的是我在下面的内容。
我想我明白C#假设零是int
,因为这是默认的,所以当我尝试将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"]);
我想要理解的是为什么0被选为int
而不是short
?如果它被选为short
那么这将使它更普遍“可转让”。有什么理由让我失踪吗?