-2

这两个语句之间有任何性能差异吗?

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

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

1 回答 1

4

在第一个示例中,您将

  1. 通过枚举源创建列表
  2. 枚举新列表并调用Console.WriteLine每个元素。

在第二个示例中,您将

  1. 枚举源并调用Console.WriteLine每个元素。

第一个比第二个有两个性能惩罚:

  • List对象的创建
  • 双重枚举:在原始来源上,然后是列表
于 2013-04-12T10:07:58.097 回答