'For Each'VB.NET迭代计数

时间:2009-06-18 20:07:52

标签: vb.net

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

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:8)

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

而不是

For Each element as MyType in MyList
    ....
Next

For i as integer = 0 to MyList.Count - 1
    element = MyList(i)
    ....
Next

这将是相同的结果。您有i作为迭代器,element保存当前元素。

答案 2 :(得分:6)

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

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

答案 3 :(得分:2)

你必须自己做。大多数情况下,如果你正在做For Each(在C#中的foreach),那么你不关心迭代次数。

答案 4 :(得分:0)

在M个元素的集合中找到的每个元素的Foreach循环。

所以,不,没有明确的迭代计数,因为在FOR循环中会有。