我是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”
这里有什么问题?
如果您在代码中添加了额外的一行而又没有出现错误的行,这将变得更加清晰
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)