list.RemoveAt in循环

Che*_*ter 0 c# loops list

for (int j = 0; j < list.Count; ++j )
{
     if (list[j].current_status == false)
     {  
       list.RemoveAt(j);  
     }  
}
Run Code Online (Sandbox Code Playgroud)

我想删除列表中有current_status == false的所有项目.但是,当执行语句:list.RemoveAt(j)时,list.Count将减去1.最后,原始循环不能从list [0]循环到list [list.Count].我该如何处理这种情况?

谢谢

Jon*_*Jon 6

您可以使用RemoveAll而不是RemoveAt:

list.RemoveAll(item => item.current_status == false);
Run Code Online (Sandbox Code Playgroud)