首页 > 解决方案 > 在 C# 中减去整数时出现错误“无法将 int 隐式转换为 short”

问题描述

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

        Console.WriteLine(num2.GetType()); // System.Int16
        Console.WriteLine(num1.GetType()); // System.Int16
        num2 = num1 - num2;

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

这里有什么问题?

标签: c#

解决方案


如果您在代码中添加额外的行而没有错误行,它会变得更清楚

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

如您所见,从另一个 Int16 中减去一个 Int16 实际上会得到一个 Int32。您不能将结果分配回(没有显式转换),num2因为它被定义为 Int16。

如果您真的想分配回给它,请使用显式转换解决它num2

num2 = (short)(num1-num2);

推荐阅读