首先说一声儿:不好意思。今天一不小心把分都用完了。在Java中,可以用Iterator来遍历一个集合。如果符合某个条件,就可以使用Itreator的一个方法将这个对象从集合中删除。然后继续遍历。
但是在C#中应该怎么办呢?C#中好像没有类似于Java中Iterator的东西(只有一个IEnmuation)中就会报错。我现在只好用For循环来实现这个功能了。
但是在C#中应该怎么办呢?C#中好像没有类似于Java中Iterator的东西(只有一个IEnmuation)中就会报错。我现在只好用For循环来实现这个功能了。
C#等价物其实是IEnumerator,而且使用起来更方便:
foreach(SomeType obj in SomeTypeImplementIEmumerable)
{
obj.DoSomeThing();
...
}
我知道可以这么做.但是如果在foreach中删除一个集合中的元素就会报错的。你可以尝试一下。
我现在是这个做的。但是我感觉写出来代码很丑陋。
for (int i = 0; i < list.Size; i++)
{
if(xxx)
{
list.Remove(i);
i--;
continue;
}
}大致就是这个样子了。
to Elvewyn(Elvewyn)
删除的时候不要这么做
for (int i = 0; i < list.Size; i++)
{
if(xxx)
{
list.Remove(i);
i--;
continue;
}
}
应该
for (int i = list.Size-1; i >=0; i--)
{
if(xxx)
{
list.Remove(i);
i--;
continue;
}
}
道理很简单,for循环次数是首先给出来的,当你删除后,for仍然会循环到指定次数,肯定报错呀