了解 VB.NET 中的 IEnumerator语言 - 重置



我很难理解 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

最新更新