可能重复:
循环功能结果时foreach如何工作?
标题是其中的核心问题.这是一个示例场景,可以充实它.
foreach(something thing in GetSomethings())
{ dosomething }
Run Code Online (Sandbox Code Playgroud)
让我们说GetSomethings有副作用.GetSomethings会被执行一次还是会在每次循环迭代时执行?
Are*_*ren 10
Foreach使用IEnumerableinterface,它只检索一次Enumerator,并使用它来遍历集合.
因此,在复杂函数上使用foreach非常安全,每次都不会重新计算集合.