从大到小删除,如:
a.RemoveAt(12);a.RemoveAt(8);a.RemoveAt(1);
因为你先删除1,8就变成7了,删除位置改变了
如果用循环,只能用for从大到小循环,不能用foreach,因为foreach不允许修改遍历的集合
for(int i=a.Length -1;i>=0;i--){
if(条件)a.RemoveAt(i);
}
for(int i =0 ;i
if(i== 1 || i== 8 || i==12)
a.set(i,null);//将下标1和8和12的值赋null
}
为什么要赋空值而不是直接移除掉呢,因为如果直接删除的话那么下标所对应的值就会变化
(应该明白这句话什么意思吧)
把你要删除的那些对象加到另一个集合里面,比如叫 listdel ,然后你循环这个集合,
用 a.Remove(对象),就可以了,不用管索引了
要删除的那些对象加到另一个集合里面