首先说一声儿:不好意思。今天一不小心把分都用完了。在Java中,可以用Iterator来遍历一个集合。如果符合某个条件,就可以使用Itreator的一个方法将这个对象从集合中删除。然后继续遍历。
但是在C#中应该怎么办呢?C#中好像没有类似于Java中Iterator的东西(只有一个IEnmuation)中就会报错。我现在只好用For循环来实现这个功能了。

解决方案 »

  1.   

    呵呵,没事,有分了把分连本带息补上就行。
    C#等价物其实是IEnumerator,而且使用起来更方便:
    foreach(SomeType obj in SomeTypeImplementIEmumerable)
    {
       obj.DoSomeThing();
       ...
    }
      

  2.   

    行,等我有分了就补上.
    我知道可以这么做.但是如果在foreach中删除一个集合中的元素就会报错的。你可以尝试一下。
    我现在是这个做的。但是我感觉写出来代码很丑陋。
    for (int i = 0; i < list.Size; i++)
    {
      if(xxx)
      {
        list.Remove(i);
        i--;
        continue;
      }
    }大致就是这个样子了。
      

  3.   

    删除确实是会报错的,这个倒不假。完全一样的等价物确实是没有。不过java的IIterator是一个接口,在C#下也很容易实现,只是这要靠自己,确实比较麻烦。
      

  4.   

    能发,嘎嘎
    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仍然会循环到指定次数,肯定报错呀