1

短い値をインデックス リストに追加しようとしていますが、メソッドに無効な引数があるというエラーが発生します。

    int verticesStart = vertices.Count();
    short vertStart = (short)verticesStart;

インデックス リストは「短い」ので、使用できるように変数 verticesStart をキャストします。

    indices.Add(vertStart + 0);

この行でエラーが発生します。Add メソッドで何らかの数学関数を実行することは許可されていませんか?

4

4 に答える 4

3

C# の算術演算は、 ではなく、32 ビット以上の整数型に対して定義されていshortます。するとvertStart + 0、結果は になり、intキャストバックする必要がありますshort

indices.Add((short)(vertStart + 0));

(実際には を追加しているのではなく0、他の値を追加していると仮定しています。もちろん、0 を追加しても値は変わらないためです。)

于 2013-07-14T13:09:35.477 に答える
2

インデックス リストは " short"であるため、

shortしたがって、にのみ追加できますindices

vertStart + 0

言語の規則は、short + inttype を持つことを指定しますintvertStartは型short0intリテラルであるため、 type をvertStart + 0持っていintます。したがって、

indices.Add(vertStart + 0);

intsを保持しているとあなたが言ったリストにを追加しようとしていますshort。これは不可能です。

メソッド内で何らかの数学関数を実行することは許可されていませんAddか?

それはポイントではありません。すべての式は、メソッドに渡される前にその値について評価されますAdd。あなたの場合、 type に評価される式がありintます。しかし、あなたが言うようにindicies本当に aなら、それにs を追加することはできません。への縮小変換が必要になります。List<short>intshort

indices.Add((short)(vertStart + 0));
于 2013-07-14T13:06:22.357 に答える
0

算術は常に少なくとも で行われintます。したがって、その足し算を行うと (なぜ 0 を足すのですか?)、int元に戻ることになります。その後、再びショートにキャストする必要があります。

于 2013-07-14T13:05:58.530 に答える
-2

これを使用して:

using System;
using System.Collections.Generic;

public class Test
{
    public static void Main()
    {
        List<short> list = new List<short>();
        list.Add(1+1);
    }
}

C# では 1 になるintので、変数を必ず追加する必要があります。short

于 2013-07-14T13:08:04.347 に答える