我们都知道缓慢的方式:
foreach..
答案 0 :(得分:16)
List constructor is a good bet。
IEnumerable<T> enumerable = ...;
List<T> list = new List<T>(enumerable);
答案 1 :(得分:5)
怎么样:
IEnumerable<T> sequence = GetSequenceFromSomewhere();
List<T> list = new List<T>(sequence);
请注意,这是针对序列恰好是IList<T>
的情况进行了优化 - 然后使用IList<T>.CopyTo
。在大多数情况下它仍然是O(n),但可能比迭代更快O(n):)(它还可以避免在创建它时进行任何大小调整。)
答案 2 :(得分:3)
您想在通用列表上使用.AddRange方法。
List<string> strings = new List<string>();
strings.AddRange(...);
..或构造函数..
new List<string>(...);