如果我有以下代码:
short myShortA = 54;
short myShortB = 12;
short myShortC = (short)(myShortA - myShortB);
这两个操作数都是短线而且它会变短,所以为什么我必须施展呢?
答案 0 :(得分:11)
因为没有“短 - 短”操作员。两个操作数都被提升为int。
来自C#3规范的第7.7.5节:
预定义的减法运算符 如下所列。所有运营商 从x中减去y。
整数减法:
int operator –(int x, int y); uint operator –(uint x, uint y); long operator –(long x, long y); ulong operator –(ulong x, ulong y);
在检查的上下文中,如果差异是 在结果类型范围之外, 抛出System.OverflowException。
(然后是浮点减法。)
答案 1 :(得分:1)
为了让事情变得更简单,你可以简单地编写一个这样的扩展方法:
public static class NumericExtensions
{
public static short Subtract(this short target, short value)
{
return (short)(target - value);
}
}
其他人回答了你的问题......:)