2016-05-27 82 views
1

任何一种方法可以一次性生成给定数量的元素的C#列表?不只是逐个添加,还是从其他IEnumerable中复制。然后我可以使用索引器来分配值。我找到了一个构造函数List(int capacity)。它有帮助吗?任何方式来使一个C#列表与一些元素?

+0

为什么不使用数组呢? – 2kay

+0

我需要一些列表功能在未来。 – user1899020

+0

你是否有预定的值,你想要创建列表? –

回答

3

好了,你可以把它像这样

var List<MyType> result = Enumerable 
    .Range(0, count) 
    .Select(index => create your type instance here) 
    .ToList(); 

,你可以,也许,不想额外的步骤(因为你可以通过Select填充列表)。如果你正在寻找性能然后

// new List<MyType>(count) reserves memory for "count" items 
// so "Add" will not reallocate the list 
var List<MyType> result = new List<MyType>(count); 

for (int i = 0; i < count; ++i) 
    result.Add(create your type instance here); 
+2

甚至'Enumerable.Repeat(默认(T),计数).ToList()' – 2kay

+0

我想知道性能。它是先制作一个序列然后将其复制到列表中?或者直接在名单上工作? – user1899020

+0

@ 2kay:因为“...然后我可以使用索引器来分配值......”我更喜欢'Range(0,count)'并通过'Select'填充列表 –

相关问题