3

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

4

3 回答 3

4

如果您想拥有索引,请使用For-loop 而不是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)
于 2013-05-13T20:23:43.177 回答
1

目前还没有内置的解决方案。当然你知道如何用柜台来做这件事,但这可能是你正在寻找的(作者Jon Skeet

于 2013-05-13T20:28:23.420 回答
0

你可以这样做:

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

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

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

如果您需要itemlist.item(index).

于 2013-05-13T20:21:21.963 回答