在Java语言中,我可以使用Iterator.remove()方法http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.html#remove()迭代集合并从中移除一些对象
这是非常简单和自然的。就像你在冰箱里找食物,然后扔掉过期的食物。如何在c#中做同样的事情?
我想在同一个循环中进行iterate和clean-up集合。
有几个相关的问题,例如How to iterate and update a list,但我仍然无法在c#中找到与此操作完全相同的副本
发布于 2012-01-03 04:40:45
在C#中,你可以使用一个for循环来遍历一个集合,并在其中移除项目--这将适用于IList<T>集合。
为了安全起见,您应该向后迭代
for(int i = coll.Count - 1; i >= 0; i--)
{
if(coll[i] == something)
{
coll.RemoveAt(i);
}
}如果你能使用LINQ,看看Jon Skeet建议的RemoveAll。这将允许您从列表中删除所有项,而无需迭代,只需提供一个谓词即可。
coll.RemoveAll(i => i == something);https://stackoverflow.com/questions/8705107
复制相似问题