如何更快地将元素/对象添加到列表中?

时间:2012-04-12 10:44:43

标签: c# .net list

让我说我有这样的事情:

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等等。元素后面的数字并不总是顺序的。是的,他们都属于同一类型。

5 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果它们都是相同的类型,你知道你需要多少只需要一个循环来创建一个数组:

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

稍后,将所有项目添加到列表中:

list.AddRange(items);

答案 2 :(得分:0)

如果您提前知道要将多少元素添加到列表中,则可以在构造函数中设置列表的大小 - 这样可以保存列表不会动态调整大小,因为它会填满,例如< / p>

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

List<MySomething> myList = new List<MySomething>(100);

答案 3 :(得分:0)

您可以创建一个方法来返回您在其中创建的每个对象: http://msdn.microsoft.com/en-us/library/9k7k7cf0(v=vs.80).aspx

答案 4 :(得分:-1)

var list = Enumerable
  .Range(1,100)
  .Select(i =>  new MySomething(stuff))
  .ToList();