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

如果它们都是相同的类型,并且您知道需要多少个,则最初只需使用循环来创建数组:

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

您可以使用AddRange(<T>) http://msdn.microsoft.com/en-us/library/z883w3dc.aspx

但我很确定内部实现只是遍历集合并一一添加每个元素

于 2012-04-12T10:47:46.803 回答
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 回答