这是一个坏主意?

Private Class GH_DataStructureEnumerator(Of Q As Types.IGH_Goo)
  Implements IEnumerable(Of Q)
  Implements IEnumerator(Of Q)
  ....
  ....
  'Current, MoveNext, Reset etc.'
  ....
  ....

  Public Function GetEnumerator_Generic() As IEnumerator(Of Q) _
                  Implements IEnumerable(Of Q).GetEnumerator
    Return Me
  End Function
End Class

此类是仅作为一个IEnumerable(Of T)已只读属性可见,并将其保存箱,它包装的IEnumerator(OF T)一个附加的类。但不知何故,它只是似乎是错误的。有没有更好的办法?

有帮助吗?

解决方案

这是一个坏主意,因为该解决方案将打破,如果有人试图枚举您的收藏不止一次在同一时间。

例如:这将在某种程度上

For Each cur1 in yourObj 
  For Each cur2 in yourObj
    Console.WriteLine("{0} - {1}", cur1,cur2)
  Next
Next

其他提示

绝对是一个好主意。特别是,它意味着两次调用GetEnumerator将回到同一个对象的引用 - 当他们回来的独立的迭代器

现在话说回来,C#编译器会生成如果使用迭代器块实现这两种类型的类...但它竭尽全力,以确保它得到它的权利。我建议你不要把自己通过这种痛苦:)

实施IEnumerable的

  

确实提供了的GetEnumerator()方法,它返回一个的 嵌套公共结构 称为“枚举”。

顺便说一句,这个网站是由布拉德·艾布拉姆斯维持 - 的框架设计指南

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top