【发布时间】:2010-09-27 22:10:14
【问题描述】:
我注意到List<T> 将其枚举器定义为struct,而ArrayList 将其枚举器定义为class。有什么不同?如果我要为我的班级编写一个枚举器,哪个更可取?
编辑:使用yield 无法满足我的要求,因此我正在实现自己的枚举器。也就是说,我想知道按照List<T> 的行并将其实现为结构是否会更好。
【问题讨论】:
-
我非常想知道您在使用 yield return 时遇到的问题。
-
1) 我非常讨厌“编译器魔法”,我不确定输出会是什么。 (虽然我会在简单的情况下使用它。)
-
2) 我想支持一个可以在迭代过程中修改的列表。正常的迭代器语义禁止这样做。 (而且我不知道编译器怎么知道我的列表被修改了!)
-
那么几个无害的问题:学习编译器的魔法不是更好吗,这样您就可以从中受益?当说你的实现速度更快、内存消耗更少时,你是否在实际测试中进行了测量?您多久使用一次重置?
-
对于
List<T>部分,请在此问题中了解 Eric Lippert 的解释:why-bcl-collections-use-struct-enumerators-not-classes?
标签: c# .net enumeration