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

Mus*_*hin 3 c# foreach

可能重复:
循环功能结果时foreach如何工作?

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

foreach(something thing in GetSomethings())
{ dosomething }
Run Code Online (Sandbox Code Playgroud)

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

Are*_*ren 10

Foreach使用IEnumerableinterface,它只检索一次Enumerator,并使用它来遍历集合.

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