'For Each'VB.NET迭代计数

Ste*_*ven 11 vb.net

For EachVisual Basic中的循环是否有迭代计数,或者我自己必须这样做?

And*_*are 9

不幸的是你必须自己做.该For Each构造使用实现IEnumerator接口来迭代序列,并且IEnumerator接口不公开任何成员以指示其在序列中的位置或当前索引.


Jür*_*ock 8

如果我需要一个迭代器变量,我会使用一个for循环(每个IEnumerable都应该有一个.Count属性).

代替

For Each element as MyType in MyList
    ....
Next
Run Code Online (Sandbox Code Playgroud)

For i as integer = 0 to MyList.Count - 1
    element = MyList(i)
    ....
Next
Run Code Online (Sandbox Code Playgroud)

这将是相同的结果.你有i一个迭代器并element保存当前元素.


Jar*_*Par 6

如果您使用的是Visual Studio 2009(或VB.Net 9.0),则可以使用"选择"覆盖来获取值的计数.

For Each cur in col.Select(Function(x,i) New With { .Index = i, .Value = x })
 ...
Next
Run Code Online (Sandbox Code Playgroud)