为什么零选择为三元运算符内的Int32?

时间:2012-11-21 16:09:40

标签: c# type-conversion ternary-operator

  

可能重复:
  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那么这将使它更普遍“可转让”。有什么理由让我失踪吗?

0 个答案:

没有答案