C# 循环中的list.RemoveAt for(int j=0;j
但是,我想删除列表中当前_status==false的所有项目, 当执行语句:list.RemoveAt(j)时,list.Count将减1。最后,原始循环不能从列表[0]循环到列表[list.Count]。我如何处理这种情况C# 循环中的list.RemoveAt for(int j=0;j,c#,list,loops,C#,List,Loops,但是,我想删除列表中当前_status==false的所有项目, 当执行语句:list.RemoveAt(j)时,list.Count将减1。最后,原始循环不能从列表[0]循环到列表[list.Count]。我如何处理这种情况 谢谢您可以使用RemoveAll而不是RemoveAt: for (int j = 0; j < list.Count; ++j ) { if (list[j].current_status == false) { list.R
谢谢您可以使用
RemoveAll
而不是RemoveAt
:
for (int j = 0; j < list.Count; ++j )
{
if (list[j].current_status == false)
{
list.RemoveAt(j);
}
}
您可以使用
RemoveAll
而不是RemoveAt
:
for (int j = 0; j < list.Count; ++j )
{
if (list[j].current_status == false)
{
list.RemoveAt(j);
}
}
int size=list.Count;
对于(int j=0;j
int size=list.Count;
对于(int j=0;j
也运行线性时间,反向循环如下:
int size = list.Count;
for (int j = 0; j < size; ++j )
{
if (list[j].current_status == false)
{
list.RemoveAt(j);
size--;
j--;
}
}
旁注:尽量不要用“==”和/或“!=”测试布尔值,而是使用表达式本身或需要使用否定符号同样运行线性时间,一个反向循环,如下所示:
int size = list.Count;
for (int j = 0; j < size; ++j )
{
if (list[j].current_status == false)
{
list.RemoveAt(j);
size--;
j--;
}
}
旁注:尽量不要使用“==”和/或“!=”测试布尔值,而是使用表达式本身或需要使用否定符号这比原始循环理念好得多,因为它在线性时间内运行。这比原始循环理念好得多,因为它在线性时间内运行。