Dav*_*ten 5 c# ienumerable ienumerator
这是一个坏主意吗?
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
Run Code Online (Sandbox Code Playgroud)
此类仅作为IEnumerable(Of T)readonly属性可见,它为我节省了一个包装IEnumerator(Of T)的附加类.但不知何故,这似乎是错误的.有没有更好的办法?
绝对是个坏主意.特别是,它意味着两次调用GetEnumerator将返回对同一对象的引用 - 当它们应该返回独立的迭代器时.
现在已经说过了,如果你使用迭代器块,C#编译器将生成实现这两种类型的类......但是它会花很多时间来确保它正确.我建议你不要让自己忍受痛苦:)
这是一个坏主意,因为如果有人试图同时枚举您的集合不止一次,解决方案就会崩溃。
例如:这会以某种方式中断
For Each cur1 in yourObj
For Each cur2 in yourObj
Console.WriteLine("{0} - {1}", cur1,cur2)
Next
Next
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |