为什么我需要将这段代码包装成简短的?

时间:2009-10-10 06:34:10

标签: c# .net casting

如果我有以下代码:

short myShortA = 54;
short myShortB = 12;
short myShortC = (short)(myShortA - myShortB);

这两个操作数都是短线而且它会变短,所以为什么我必须施展呢?

2 个答案:

答案 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);
    }
}

其他人回答了你的问题......:)