C#foreach - 是否每次迭代计算集合?

时间:2010-09-21 19:53:47

标签: c# foreach

  

可能重复:
  How does foreach work when looping through function results?

标题是其中的核心问题。这是一个示例场景,可以更多地充实它。

foreach(something thing in GetSomethings())
{ dosomething }

让我们说GetSomethings有副作用。 GetSomethings会被执行一次还是会在每次循环迭代时执行?

1 个答案:

答案 0 :(得分:10)

Foreach使用IEnumerable接口,它会检索一次Enumerator,并使用它来遍历集合。

因此,在复杂函数上使用foreach非常安全,每次都不会重新计算集合。