可能重复:
How does foreach work when looping through function results?
标题是其中的核心问题。这是一个示例场景,可以更多地充实它。
foreach(something thing in GetSomethings())
{ dosomething }
让我们说GetSomethings有副作用。 GetSomethings会被执行一次还是会在每次循环迭代时执行?
答案 0 :(得分:10)
Foreach使用IEnumerable
接口,它会检索一次Enumerator,并使用它来遍历集合。
因此,在复杂函数上使用foreach非常安全,每次都不会重新计算集合。