2009-06-18 10 views

Répondre

9

Malheureusement, vous devez le faire vous-même. La construction For Each utilise une implémentation de l'interface IEnumerator pour itérer une séquence et l'interface IEnumerator n'expose aucun membre pour indiquer sa position ou son index actuel dans la séquence.

+0

Est-ce que quelqu'un sait pourquoi c'est le cas? –

2

Vous devriez le faire vous-même. Surtout, si vous faites pour chaque (foreach en C#), alors vous ne vous souciez pas du nombre d'itérations.

0

Foreach boucles pour chaque élément M qu'il trouve dans une collection de M éléments. Donc, non, il n'y a pas de compte d'itération explicite comme il y aurait dans une boucle FOR.

6

Si vous utilisez Visual Studio 2009 (ou VB.Net 9.0), vous pouvez utiliser un remplacement de sélection pour obtenir un compte avec les valeurs.

For Each cur in col.Select(Function(x,i) New With { .Index = i, .Value = x }) 
... 
Next 
7

Si je besoin d'une variable iterator, j'utiliser une boucle à la place for (chaque IEnumerable doit avoir une propriété .Count).

Au lieu de

For Each element as MyType in MyList 
    .... 
Next 

écrire

For i as integer = 0 to MyList.Count - 1 
    element = MyList(i) 
    .... 
Next 

qui sera le même résultat. Vous avez i comme itérateur et element contient l'élément en cours.

Questions connexes