短+短!=短?

时间:2015-05-06 13:13:56

标签: c# visual-studio-2013 short

版本:Visual Studio Professional 2013 Update 4
构建参数:首选32位为真

我不理解以下C#代码中的错误:

short iCount = 20;
short iValue = iCount + (short)1;

将short添加到转换为short的int会导致以下错误:

  

无法将类型'int'隐式转换为'short'。存在显式转换(您是否错过了演员?)

上述错误,在以下情况中也会出现,在这里完全有效:

short iCount = 20;
short iValue = iCount + 1;

以下解决方法会删除错误:

short iCount = 20;
short iValue = (short)(iCount + 1);

因此,以“short + Int32 constant”的形式添加显然是有效的,结果是Int32,需要将其转换为简短的。

是否有解释为什么第一个代码示例失败或者这是编译器错误? (4次更新后我几乎无法相信)

1 个答案:

答案 0 :(得分:3)

Int是定义了+运算符的最小有符号类型,因此尝试在short上使用+会导致出现这种错误。