此时跳过了E(i=3) 2、我们使用倒序遍历

时间:2022-01-06 08:15:19

1、我们选择用for循环:

for(int i=0;i<list.count;i++) { if(list[i]) { list.RemoveAt(i); } }

如果这样循环,,必定不同错误,

{A B C D E F G H}  假设当前遍历到D(i=3),移除,接着遍历i=4(F), 此时跳过了E(i=3)

2、我们使用倒序遍历,这个问题就解决了

for(int i=list.Count-1;i>=0;i--) { if(list[i]) { list.RemoveAt(i); } }