性能IEnumerable <t> .ToList()。ForEach()over loop </t>

时间:2013-04-12 10:03:52

标签: c# linq

这两个陈述之间是否有任何性能差异?

IEnumerable<T>.ToList().ForEach(x => Console.WriteLine(x));

foreach (var obj in IEnumerable<T>)
   Console.WriteLine(obj)

1 个答案:

答案 0 :(得分:3)

在第一个例子中,你将

  1. 通过枚举来源
  2. 创建列表
  3. 枚举新列表并为每个元素调用Console.WriteLine
  4. 在第二个例子中,你将

    1. 枚举来源并为每个元素调用Console.WriteLine
    2. 第一个对第二个有两个性能惩罚:

      • 创建新的List对象
      • 双重枚举:在原始来源上,然后是列表