让我说我有这样的事情:
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等等。元素后面的数字并不总是顺序的。是的,他们都属于同一类型。
答案 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();