3
我创建了一个由间隔组成的数据结构。数据结构自然应该有一个列举所有区间的枚举器,但是我想公开两个不同的枚举器,它们以不同的顺序枚举区间。单个C#类的多个枚举器
其中一个枚举器枚举真的很快,但以某种任意的顺序。另一个按字典顺序列举它们,但稍慢(取决于时间间隔)。根据你试图达到的目标,一个调查员可能会偏好另一个调查员。
有没有办法允许用户决定在foreach循环中应该使用哪个枚举器?如果没有,我可以很容易地拥有一个用于在枚举数之间切换的属性,或者构造函数可以接受一个额外的参数。但我有点害怕它会比方便造成更多的困惑。
我应该为另一个枚举器创建一个返回IEnumerator的单独方法吗?对于这个奇怪的问题有没有最佳做法?
绝妙的主意!真的很喜欢它:)由于数据结构是C5通用集合库的一部分,因此必须实现IEnumerable。我已经使集合的普通枚举器成为快速的“未排序”版本。排序后的版本通过GetEnumeratorSorted方法和属性Sorted公开,因此集合可以像'foreach(var interval in collection.Sorted){}'那样循环枚举。像魅力一样工作:D –
你不能在IEnumerator上使用foreach,因为它仅仅需要一个IEnumerable来完成预期的GetEnumerator方法。 –