我很难理解 IEnumerator 在 vb.net 中没有发生的事情。
我有这段代码,它从数据库中提取数据,然后读取前两行,将每行的一列汇总到"numGirls"中。然后,使用"resEnum1.Reset()",我希望"resEnum"将自身重置为集合的开头,但事实并非如此;
Dim resEnum1 As IEnumerator = iTrack.res_by_gender(False, YearCB.Text).GetEnumerator
resEnum1.Reset()
Dim resSet As Object
Dim numGirls As Integer = 0
For x = 0 To 1
resEnum1.MoveNext()
resSet = resEnum1.Current
numGirls += resSet.qty
Next
resEnum1.Reset()
此时,我的代码应该继续并使用 MoveNext 从集合的开头 (-1) 开始循环访问集合;
While resEnum1.MoveNext
'...........'
End While
但是,IEnumerator (resEnum1) 实际上并没有重置,而是从集合的第三行继续。为什么?
显然,我没有理解某些东西,除非由我来重新发明轮子并在代码中实现"重置"?
并非所有枚举器都实现从IEnumerator
继承的 Reset
方法。可以将其视为"仅向前"枚举器。
"重置方法是为了 COM 互操作性而提供的。它不一定需要实施;相反,实现者可以简单地抛出一个 NotSupportedException。- MSDN