【问题标题】:C# foreach - Is collection computed with each iteration? [duplicate]C# foreach - 每次迭代都会计算集合吗? [复制]
【发布时间】:2010-09-21 19:53:47
【问题描述】:

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

标题包含问题的核心。这是一个示例场景,可以进一步充实它。

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

假设 GetSomethings 有副作用。 GetSomethings 会执行一次,还是会在每次循环迭代时执行?

【问题讨论】:

  • 请停止回答这个重复的问题。
  • @anna 李尔;这当然是一个重复的问题。标题可能比简单的“迭代时 foreach 是如何工作的”更简洁一些。
  • 我注意到这个问题对自己来说是微不足道的;只需让 GetSomethings 返回一个包含十个元素的集合并打印到控制台。如果打印一次,则获取一次。如果它打印十次,那么每次迭代都会获取一次。

标签: c# foreach


【解决方案1】:

Foreach 使用IEnumerable 接口,它检索一次枚举器,并使用它来遍历集合。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 2020-08-27
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2011-10-11
相关资源
最近更新 更多