按理是不会这样的,但如果diamondEnumerator.Reset()抛出异常,而被外面的catch截住的话,就会这样了。

解决方案 »

  1.   

    你这个diamondEnumerator是什么我都不知道,我怎么知道为什么抛出异常?
    看看异常的描述或许会知道为什么吧。
      

  2.   

    enumerator在集合改变后遍历的结果应该保持不变,如果这个enumerator没有作特殊的处理,在集合改变后再继续遍历就会抛出异常
      

  3.   

    当前的遍历指向的那个节点已经被删除了,再reset的时候就出错了。
      

  4.   

    保证enumerator稳定的具体方法是:
    1. 得到enumerator时生成当前集合的一个拷贝,enumerator对这个拷贝做遍历,这样不论集合变化与否都没有问题。
    2. 在遍历时比较集合的版本,发现变化,即集合内容变化了,就抛出异常。这个情况发生时就是你所遇到的问题。
      

  5.   

    感谢ripper兄,虽然我知道你不会在意这个分数,但是我只能用它来表示谢意 :)
      

  6.   

    你喜欢玩sega的sonic啊 起的名字很有意思~ ;)