版本: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次更新后我几乎无法相信)
答案 0 :(得分:3)
Int是定义了+运算符的最小有符号类型,因此尝试在short上使用+会导致出现这种错误。