版本: Visual Studio Professional 2013 更新4
构建参数: Prefer 32-bit 为真
我不理解以下C#代码中的错误:
short iCount = 20;
short iValue = iCount + (short)1;
将一个转换为short的int类型加上一个short会导致以下错误:
无法隐式地将类型'int'转换为'short'。存在显式转换(是否缺少转换?)
上述错误也出现在以下情况中,这是完全合理的:
short iCount = 20;
short iValue = iCount + 1;
以下解决方法可以消除错误:
short iCount = 20;
short iValue = (short)(iCount + 1);
似乎使用 "short + Int32 常量" 的形式可以工作,并且结果是 Int32,需要强制转换为 short。
第一个代码示例失败的原因是什么,还是这是编译器的错误?(经过 4 次更新后我几乎不敢相信)
int
到short
的转换是“免费”的。例如:const int iCount = 20; short iValue = iCount + 1;
请注意,两个加数都是int
类型,因此和也是int
类型,但在这些情况下,从int
到short
的转换是隐含的。 - Jeppe Stig Nielsen