短+短!=短?

short + short != short?

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

我不明白以下 C# 代码中的错误:

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

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

Cannot implicitly convert type 'int' to 'short'. An explicit conversion exists (are you missing a cast?)

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

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

以下解决方法消除了错误:

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

所以 "short + Int32 constant" 形式的加法显然有效,结果是 Int32,需要转换为 short。

是否解释了第一个代码示例失败的原因,或者这是一个编译器错误? (4次更新后我简直不敢相信)

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