在“foreach”循环中修改列表的最佳方法是什么?

2023-12-05

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(使用前将#替换为@)

在“foreach”循环中修改列表的最佳方法是什么? 的相关文章

随机推荐