Skip to main content
 首页 » 编程设计

c#之Foreach 同时将项目添加到循环集合

2024年01月13日29TianFang

情况是这样的:

我正在浏览一些代码,我想知道以下语句是否引用了所选集合或一个副本,当 foreach 循环完成时,它用它来替换原始对象。如果是第一个,它会获取新找到的页面并将它们加入循环吗?

foreach(Page page in Pages) 
{ 
    page.AddRange(RetrieveSubPages(page.Id)); 
} 

编辑:对不起,我打错了。

应该是这样的:

foreach(Page page in pages) 
{ 
    pages.AddRange(RetrieveSubPages(page.Id)); 
} 

我想说的是,如果我将一些对象添加到枚举集合中,它会在 foreach 中加入这些对象吗?

请您参考如下方法:

看起来代码并没有修改Pages集合,而是修改了Pages中的Page对象的内容收藏。 Page 类型至少具有类似集合的方法。

一般来说,每个集合都以适合自己的方式实现迭代,并且通常在迭代时变得不可修改,但是可以通过拍摄自身的快照来实现迭代的集合。

没有检测循环退出的机制,允许在该点采取行动(考虑这将如何与异常交互,在循环体中中断和返回)。