在枚举 .NET 集合时,MSDN 指出:
只要集合保持不变,枚举数就保持有效。如果对集合进行了更改,例如添加、修改或删除元素,则枚举器将不可恢复地失效,并且其行为未定义。
“不可恢复的无效”究竟是什么意思?
以一棵二叉树为例,它向下引用左右子节点,也向上引用父节点。在这样的树中,对树中单个节点的单个引用就足以在树中导航,因为您可以轻松地从中找到树中的下一个节点。
所以对于那棵树,假设我删除了一些其他节点(大概,我没有删除我当前所在的节点),我还应该使枚举器无效吗?请注意,这里我不是在谈论多线程操作,只是一个运行循环的单个线程,并在循环体内修改集合。
这个“法则”真的就是,一个法则,即使枚举器可以继续,它也不应该?