![]() |
1
8
我个人认为,让你的枚举器抛出,即使理论上可以继续,也是一个好的实践。 通常,人们会无意中将更改集合的代码放入foreach循环中。如果不这样做,它可能不会在开发人员当前正在测试的特定实例中引发,但是不同的运行时条件很容易使它引发。 通过总是抛出代码,您迫使开发人员将代码视为框架的集合和枚举,我认为这是一件好事,因为它可以降低处理库时的意外级别。 |
![]() |
2
2
标准集合枚举器的实现使其成为一项法律。创建它们时,它会从集合对象复制一个私有的“版本”整数。修改集合会增加该版本。迭代器方法比较版本,如果不匹配,它就会抛出。没办法避开那个。 但是,有一个集合类允许在枚举集合时修改集合:microsoft.visualBasic.collection。需要这样做才能与vb6集合类保持兼容。你可能想看看它是怎么做到的。IIRC,它在所有迭代器上保持weakreference,然后在修改集合时更新迭代器。当然,这不是简单的证明,删除一个元素并将其添加回可以枚举同一个对象两次。它也不便宜。 |
|
user9115052 · Python3-将枚举转换为不同的数据类型 7 年前 |
![]() |
Guy s · 按单元格值枚举python矩阵 7 年前 |
![]() |
Mickd94 · 如何实现枚举类型的特定方法 9 年前 |