情况是这样的:
我正在浏览一些代码,我想知道下面的语句是接受所选集合的引用,还是在foreach循环结束时用来替换原始对象的副本。如果是第一个,它会将新找到的页面加入到循环中吗?
foreach(Page page in Pages)
{
page.AddRange(RetrieveSubPages(page.Id));
}编辑:对不起,我打错了。
应该是这样的:
foreach(Page page in pages)
{
pages.AddRange(RetrieveSubPages(page.Id));
}我想说的是,如果我将一些对象添加到枚举集合中,它会在foreach中联接这些对象吗?
发布于 2009-09-15 08:46:55
在大多数情况下,foreach针对实时集合(无显式克隆)工作,如果您在枚举集合时尝试更改集合,则枚举器会中断并引发异常。因此,如果您要添加到Pages中,请预料到会出现问题。
https://stackoverflow.com/questions/1425932
复制相似问题