C# / .NET 4.0 中的一个新功能是您可以在foreach
没有得到例外。请参阅保罗·杰克逊的博客文章并发的一个有趣的副作用:在枚举时从集合中删除项目有关此更改的信息。
执行以下操作的最佳方法是什么?
foreach(var item in Enumerable)
{
foreach(var item2 in item.Enumerable)
{
item.Add(new item2)
}
}
通常我使用IList
作为缓存/缓冲区直到结束foreach
,但是还有更好的办法吗?
foreach 中使用的集合是不可变的。这很大程度上是设计使然。
正如它所说MSDN:
foreach 语句用于
迭代集合得到
您想要的信息,但可以
不用于添加或删除项目
从源集合中避免
不可预测的副作用。如果你
需要添加或删除项目
源集合,使用for循环。
该帖子在linkPoko 提供的表明这在新的并发集合中是允许的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)