Visual Basic中的For Each
循环是否有迭代计数,或者我自己必须这样做?
答案 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循环中会有。