不能隐式地将类型'int'转换为'short'?

时间:2012-11-21 21:40:17

标签: c# .net

我有3个变量都声明为'Int16'类型,但这段代码拒绝工作。

    private Int16 _cap;                 // Seat Capacity
    private Int16 _used;                // Seats Filled
    private Int16 _avail;               // Seats Available

    public Int16 SeatsTotal {
        get {
            return _cap;
        }
        set {
            _cap = value;
            _used = _cap - _avail;
        }
    }

除了_used = _cap - _avail;引发此错误的部分,错误

  

1无法将类型'int'隐式转换为'short'。存在显式转换(您是否错过了演员?)

1 个答案:

答案 0 :(得分:6)

是的,那是因为shortInt16)没有减法运算符。所以当你写:

_cap - _avail

这是有效的:

(int) _cap - (int) _avail

...结果为int

当然,你可以投下结果:

_used = (short) (_cap - _avail);