为什么LINQ ToList不在这里使用?

时间:2016-04-23 20:36:22

标签: c# .net linq ienumerable enumeration

我看到以下代码:

using(var iterator = source.GetEnumerator()) {...}

sourceIEnumerable<T>

执行上述操作与将source转换为List<T>然后对其进行迭代有什么好处?

2 个答案:

答案 0 :(得分:3)

将其转换为列表将迭代可枚举一次,并将所有引用(甚至值类型的值)复制到新的List<>中。然后,您将遍历列表。这意味着你会迭代两次。

使用IEnumerable<>作为枚举源只迭代序列一次。

为什么有人决定使用枚举器手动执行迭代,而不是将详细信息留给foreach,这在您发布的小范围内并不清楚。

答案 1 :(得分:2)

  1. 转换为List<T>需要额外的内存和CPU周期才能执行转换,更不用说你要对数据进行两次迭代了。

  2. 迭代前无需转换为List<T>foreach可以迭代任何实现IEnumerable<T>

  3. 的内容
相关问题