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

はい、それはshortInt16)の減算演算子がないためです。だからあなたが書くとき:

_cap - _avail

それは事実上:

(int) _cap - (int) _avail

...int結果が出ます。

もちろん、結果をキャストすることもできます。

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