如果用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]);
}
}