Lo usé a veces cuando la primera iteración hace algo diferente de los demás.
Por ejemplo, si desea imprimir miembros a la consola y separar los resultados por línea, puede escribir.
using (IEnumerator<MyClass> classesEnum = myClasses.GetEnumerator()) {
if (classEnum.MoveNext())
Console.WriteLine(classesEnum.Current);
while (classesEnum.MoveNext()) {
Console.WriteLine("-----------------");
Console.WriteLine(classesEnum.Current);
}
}
entonces el resultado es
myClass 1
-----------------
myClass 2
-----------------
myClass 3
Y otra situación es cuando iterar 2 encuestadores juntos.
using (IEnumerator<MyClass> classesEnum = myClasses.GetEnumerator()) {
using (IEnumerator<MyClass> classesEnum2 = myClasses2.GetEnumerator()) {
while (classesEnum.MoveNext() && classEnum2.MoveNext())
Console.WriteLine("{0}, {1}", classesEnum.Current, classesEnum2.Current);
}
}
resultado
myClass 1, myClass A
myClass 2, myClass B
myClass 3, myClass C
Usando encuestador le permite hacer más flexible en su iteración. Sin embargo, en la mayoría de casos, se puede usar foreach
¿No debería ser algo así como while (iter.MoveNext()) en caso de que el derecho tenga dos o más elementos que los que quedan? – Spoike
Zip? Sí ... oops (fijo) - gracias amablemente –
Hola Marc, ¡muy buena respuesta! ¿Podrías explicar lo que quieres decir con "realizar una combinación cruzada"? –