无法隐式将类型“int”转换为“short”?

4
我有三个变量都声明为 '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个回答

8

是的,这是因为shortInt16)没有减法运算符。所以当你写出以下代码时:

_cap - _avail

这实际上意味着:

(int) _cap - (int) _avail

...带有int结果。

当然,您也可以直接转换结果:

_used = (short) (_cap - _avail);

2
你应该使用(short)还是Convert.Int16() - Bob.
1
或者说,任何其他算术运算符也一样。 - PinnyM
@Matthew 我刚刚删除了我的评论 :-) - ta.speot.is

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接