在C#中减去整数时出现错误“无法将int隐式转换为short”

mrI*_*den 1 c#

我是C#的新手,因此很抱歉提出这个可能很愚蠢的问题。但是,我找不到答案。减去整数时为什么会出现下面的错误?

        Console.WriteLine(num2.GetType()); // System.Int16
        Console.WriteLine(num1.GetType()); // System.Int16
        num2 = num1 - num2;
Run Code Online (Sandbox Code Playgroud)

“ num1-num2”显示红色下划线,并显示“无法将int隐式转换为short”

这里有什么问题?

Jam*_*iec 5

如果您在代码中添加了额外的一行而又没有出现错误的行,这将变得更加清晰

short num1 = 2;
short num2 = 4;
Console.WriteLine(num2.GetType()); // System.Int16
Console.WriteLine(num1.GetType()); // System.Int16
Console.WriteLine( (num1 - num2).GetType()); // System.Int32
Run Code Online (Sandbox Code Playgroud)

如您所见,从另一个Int16中减去一个Int16实际上就是一个Int32。您不能将结果分配回num2(定义为Int16 )(无显式强制转换)。

如果您确实想分配给,请使用显式强制转换解决num2

num2 = (short)(num1-num2);
Run Code Online (Sandbox Code Playgroud)