4

我有 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”。存在显式转换(您是否缺少演员表?)

4

1 回答 1

8

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

_cap - _avail

这实际上是:

(int) _cap - (int) _avail

……int结果。

当然,您可以只转换结果:

_used = (short) (_cap - _avail);
于 2012-11-21T21:41:45.143 回答