2

私がこのようなものを持っているとしましょう:

MySomething element1 = new MySomething(stuff);
MySomething element2 = new MySomething(stuff);
MySomething element3 = new MySomething(stuff);
MySomething element4 = new MySomething(stuff);
MySomething element5 = new MySomething(stuff);
//and so on...

ここで、リストか何かがどこかにあり、すべての要素をリストに追加したいとします。彼らは私がしなければならない:

myList.add(element1);
myList.add(element2);
//and so on...

それには時間がかかります。そして、100以上の要素があるとしたら、それは永遠にかかります^^作成された「要素」の多くをリストに追加するより速い方法はありますか?知っている

myList.add(new MySomething(stuff));

ただし、たとえば、この例のように要素はすでに作成されています。それらをC#でリストにすばやく追加するにはどうすればよいですか?ありがとうございました :)

編集:わかりました。名前は必ずしもelement1-100であるとは限らず、element23、element454などの場合もあります。要素の後の番号は常に連続しているわけではありません。そして、はい、それらはすべて同じタイプです。

4

5 に答える 5

0

http://msdn.microsoft.com/en-us/library/z883w3dc.aspxを使用できますAddRange(<T>)

しかし、内部実装はコレクションを繰り返し処理し、すべての要素を1つずつ追加するだけだと確信しています。

于 2012-04-12T10:47:46.803 に答える
0

それらがすべて同じタイプであり、必要な数がわかっている場合は、ループを使用して最初に配列を作成します。

MySomething[] items = new MySomething[N];
for(int i = 0; i < N; i++)
{
    items[i] = new MySomething(stuff);
}

後で、すべてのアイテムをリストに追加します。

list.AddRange(items);
于 2012-04-12T10:49:33.400 に答える
0

リストに追加する要素の数が事前にわかっている場合は、コンストラクターでリストのサイズを設定できます。これにより、リストがいっぱいになるときに動的にサイズ変更されるのを防ぐことができます。

MySomething element1 = new MySomething(stuff);
....
MySomething element100 = new Something(stuff);

List<MySomething> myList = new List<MySomething>(100);
于 2012-04-12T10:52:05.207 に答える
0

内部で作成したすべてのオブジェクトを返すメソッドを作成できます:http: //msdn.microsoft.com/en-us/library/9k7k7cf0 (v = vs.80).aspx

于 2012-04-12T11:14:15.683 に答える
-1
var list = Enumerable
  .Range(1,100)
  .Select(i =>  new MySomething(stuff))
  .ToList();
于 2012-04-12T10:52:50.387 に答える