10

クライアントのデータベースは配列内の一連の価格を返しますが、すべての価格が含まれていない場合があります。つまり、配列に要素がありません。見つけたものをIListとして返します。これは、データベースからコンテンツを取得するときに非常に効果的です。ただし、要素を配列内の適切な位置に設定するのは困難です。

IListを作成してから、IListの特定の位置に要素を追加することは可能ですか?

var myList = new List<Model>();
var myModel = new Model();
myList[3] = myModel;  // Something like what we would want to do
4

4 に答える 4

18

使用するIList<T>.Insert(int index,T item)

IList<string> mylist = new List<string>(15); 
mylist.Insert(0, "hello");
mylist.Insert(1, "world");
mylist.Insert(15, "batman"); // This will throw an exception.

MSDNから

indexがIList内のアイテムの数と等しい場合、アイテムはリストに追加されます。

リストなどの連続する要素のコレクションでは、挿入ポイントに続く要素は、新しい要素に対応するために下に移動します。コレクションにインデックスが付けられている場合、移動された要素のインデックスも更新されます。この動作は、要素がハッシュテーブルなどのバケットに概念的にグループ化されているコレクションには適用されません。

于 2010-06-01T04:32:46.700 に答える
7

IList.Insertメソッドを使用します。

于 2010-06-01T04:27:28.400 に答える
3

リストは、追加されるアイテムに対応するために動的に拡大します。事前定義されたサイズでリストを初期化する必要があります。それを行うために私が考えることができる最も簡単な方法は次のとおりです。

var myList = new Model[100].ToList();

これにより、100個のアイテムのリストが表示されます。すべてnullです。その後、myList[3]に値を自由に割り当てることができます。

あなたのコードでは不可能なことをインスタンス化しようとしていることに注意してください-インターフェースではなくIList<Model>具体的​​なタイプ(のような)が必要です。List<Model>

于 2010-06-01T04:28:17.927 に答える
0

必要に応じて挿入およびサイズ変更します

 public static IList<T> InsertR<T>(this IList<T> ilist, int index, T item) {

        if (!(index < ilist.Count)) {

            T[] array = Array.CreateInstance(typeof(T), index + 1) as T[];

            ilist.CopyTo(array, 0);

            array[index] = item;

            if (ilist.GetType().IsArray) {
                ilist = array;
            } else {
                ilist = array.ToList();
            }


        } else
            ilist[index] = item;

        return ilist;

    }

また

public static IList InsertR<T>(this IList ilist, int index, T item) {

            if (!(index < ilist.Count)) {

                T[] array = Array.CreateInstance(typeof(T), index + 1) as T[];

                ilist.CopyTo(array, 0);

                array[index] = item;

                if (ilist.GetType().IsArray) {
                    ilist = array;
                } else {
                    ilist = array.ToList();
                }


            } else
                ilist[index] = item;

            return ilist;

        }
于 2017-10-04T17:34:52.943 に答える