Это то, что вы ищете?
List<string> strings = new List<string>()
{
"Hello", "I", "am", "a", "list", "of", "strings."
};
IEnumerator<string> e = strings.GetEnumerator();
Func<string> f = () => e.MoveNext() ? e.Current : null;
for (; ; )
{
string str = f();
if (str == null)
break;
Console.Write(str + " ");
}
Смысл IEnumerator
в том, что у вас уже есть синтаксический сахар для обработки:
foreach (string str in strings)
Console.Write(str + " ");
В этом случае даже обращение с перечислителем выглядит чище:
while (e.MoveNext())
Console.Write(e.Current + " ");