关于C#:性能IEnumerable .ToList().ForEach()over循环

Performance IEnumerable<T>.ToList().ForEach() over loop

本问题已经有最佳答案,请猛点这里访问。

这两种说法有什么不同吗?

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

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


在第一个示例中,您将

  • 通过枚举源创建列表
  • 枚举新列表并为每个元素调用Console.WriteLine
  • 在第二个示例中,您将

  • 通过源枚举并为每个元素调用Console.WriteLine
  • 对第一个和第二个的绩效惩罚有两种:

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