最初の反復で他の反復とは異なることを行うときに、時々使用しました。
たとえば、メンバーをコンソールに出力し、結果を行ごとに分けたい場合は、次のように記述できます。
using (IEnumerator<MyClass> classesEnum = myClasses.GetEnumerator()) {
if (classEnum.MoveNext())
Console.WriteLine(classesEnum.Current);
while (classesEnum.MoveNext()) {
Console.WriteLine("-----------------");
Console.WriteLine(classesEnum.Current);
}
}
結果は
myClass 1
-----------------
myClass 2
-----------------
myClass 3
もう 1 つの状況は、2 つの列挙子を一緒に反復処理する場合です。
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);
}
}
結果
myClass 1, myClass A
myClass 2, myClass B
myClass 3, myClass C
列挙子を使用すると、反復をより柔軟に行うことができます。ただし、ほとんどの場合、 foreach を使用できます