yorickshan
1/11/2019 - 7:09 AM

遍历集合时移除元素

如果用foreach,会造成被遍历的集合更改后带来异常问题。

此时,用for循环可有效的解决这个问题。

for(int i=0;i<List.Count;i++)
{
 if(条件是真)
 {
 List.Remove(List[i]);
 i--; //list的长度改变了,防止越界
 }
}

或者,再用另外的一个List集合存储要删除的对象。

List<T> newlist=new List<T>();
foreach(T t in List)
{
 newlist.add(t);
}
foreach(T t in newlist)
{
 List.Remove(t);
}

或者,用 for 倒序遍历

for(int i=List.Count - 1;i>=0;i--)
{
 if(条件是真)
 {
 List.Remove(List[i]);
 }
}