2013-05-13 4 views
3

Pouvons-nous garder trace de notre itération dans notre boucle quand nous utilisons un Pour chaque? J'aime utiliser les boucles For Each pour faire défiler mes objets, mais je n'arrive pas à trouver un moyen de garder un index de l'endroit où je suis dans la boucle. À moins bien sûr que je crée mon propre ...Pour chaque compte d'itération de boucle

Répondre

4

Si vous souhaitez avoir un index, utilisez un For -loop au lieu d'un For each. C'est pourquoi ça existe.

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

bien sûr, rien ne vous empêche de créer votre propre compteur:

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

ou vous pouvez utiliser LINQ:

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

ah d'accord, ouais c'est ce que je pensais. Je voulais juste m'en assurer! Merci! –

0

Vous pouvez le faire comme ceci:

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

Bien sûr, en fonction de la collection de votre itérer, il n'y a pas que item garantie sera le même que list.item(index), mais que cela importe ou non dépend de ce que vous faites.

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

C'est l'autre alternative si vous avez besoin item être le même que list.item(index).

1

Il n'y a pas encore une solution intégrée. Bien sûr, vous savez comment le faire avec un compteur, mais this peut-être ce que vous cherchez (par Jon Skeet)