2013-05-13 3 views
3

Можно ли отслеживать нашу итерацию в нашем цикле, когда мы используем Для каждого? Мне нравится использовать циклы For Each для циклического перемещения по моим объектам, но я не могу найти способ сохранить индекс, где я нахожусь в цикле. Если, конечно, я создаю мой собственный ...Для каждого цикла Iteration Count

ответ

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) 
+0

ah okay, да, вот что я понял. просто хотел убедиться! благодаря! – 2013-05-14 12:32:42

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 

То есть другая альтернатива, если вам нужно item быть такой же, как list.item(index).

1

Там нет встроенного решения пока нет. Конечно, вы знаете, как это сделать с помощью счетчика, но this может быть то, что вы ищете (Jon Skeet)

Смежные вопросы