2009-10-07 15 views

Respuesta

81

un habitual para cada uno hará:

foreach (var item in collection) 
{ 
    // do your stuff 
} 
+0

Esto es más rápido que .ElementAt(). Lamentablemente, mi voto está bloqueado en la respuesta de Alexa, así que no puedo deshacerlo, pero esta es la mejor respuesta. +1 –

5
foreach (var element in instanceOfAClassThatImplelemntIEnumerable) 
{ 

} 
69

Junto con los métodos que han sido sugeridas de la utilización de un bucle foreach, pensé que me gustaría también mencionar que cualquier objeto que implemente IEnumerable también proporciona una IEnumerator interfaz a través del método GetEnumerator. Aunque este método generalmente no es necesario, se puede utilizar para iterar manualmente en colecciones, y es particularmente útil al escribir sus propios métodos de extensión para colecciones.

IEnumerable<T> mySequence; 
using (var sequenceEnum = mySequence.GetEnumerator()) 
{ 
    while (sequenceEnum.MoveNext()) 
    { 
     // Do something with sequenceEnum.Current. 
    } 
} 

Un buen ejemplo es cuando se quiere recorrer más de dos secuencias al mismo tiempo, lo cual no es posible con un bucle foreach.

+3

No olvides desechar el enumerador. –

+0

@Eric: Sí, lo agregaré porque es fácil pasar por alto. – Noldorin

+1

+1, la iteración manual puede ser útil a veces. –

29

o incluso un método de chapado a la antigua muy clásico

for(int i = 0; i < collection.Count(); i++) 
{ 
    string str1 = collection.ElementAt(i); 
    // do your stuff 
} 

Tal vez le gustaría este método también :-)

+3

¿Por qué tiene tantos votos ascendentes? Esto enumerará los enumerables 2n veces en lugar de una vez. –

+1

@RomanReiner porque esto funciona, algunas personas no se preocupan por el rendimiento :) – Khateeb321

+0

@RomanReiner este es un buen ejemplo, tengo que asignar cada elemento de una Colección a otra colección, creo que no puedo hacer esto usando foreach – AminM

Cuestiones relacionadas