2009-06-18 13 views

Respuesta

9

Lamentablemente usted tiene que hacer eso usted mismo. El constructo For Each utiliza una implementación de la interfaz IEnumerator para iterar una secuencia y la interfaz IEnumerator no expone a ningún miembro para indicar su posición o índice actual dentro de la secuencia.

+0

¿Alguien sabe por qué este es el caso? –

2

Tendría que hacerlo usted mismo. Sobre todo, si está haciendo For Each (foreach en C#), entonces no le importa el recuento de iteraciones.

0

Bucles foreach para cada elemento M se encuentra en una colección de M elementos.

Por lo tanto, no, no hay un recuento de iteraciones explícito como lo habría en un bucle FOR.

6

Si está utilizando Visual Studio 2009 (o VB.Net 9.0), puede usar una anulación Select para contar los valores.

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

Si necesito una variable de iteración, que utilice un bucle for vez (cada IEnumerable debe tener una propiedad .Count).

En lugar de

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

escritura

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

que será el mismo resultado. Tiene i como un iterador y element contiene el elemento actual.

Cuestiones relacionadas