对于每个循环迭代计数

时间:2013-05-13 20:15:22

标签: vb.net foreach iteration

当我们使用 For Each 时,我们是否可以在循环中跟踪迭代?我喜欢使用For Each循环来遍历我的对象,但我似乎无法找到一种方法来保持循环中我所处的位置的索引。除非我自己创造自己的......

3 个答案:

答案 0 :(得分:4)

如果您想拥有索引,请使用For - 循环而不是For each。这就是它存在的原因。

For i As Int32 = 0 To objects.Count - 1
    Dim obj = objects(i)
Next

当然没有什么可以阻止你创建自己的计数器:

Dim counter As Int32 = 0
For Each obj In objects
    counter += 1
Next

或者您可以使用Linq:

Dim query = objects.Select(Function(obj, index) "Index is:" & index)

答案 1 :(得分:1)

还没有内置解决方案。当然你知道怎么用计数器来做,但this也许你正在寻找的东西(Jon Skeet

答案 2 :(得分:0)

你可以这样做:

 Dim index as integer = 0
 For Each item in list
      'do stuff
      index += 1
 Next

当然,根据你的迭代收集,不能保证itemlist.item(index)相同,但重要的是否取决于你在做什么。

For index as integer = 0 to list.count - 1
     Dim item = list.item(index)
     'do stuff
Next

如果您需要itemlist.item(index)相同,那么这是另一种选择。