C#, yield return - MoveNext() не меняет значение Current
Мне не понятно почему в обеих случая выводит в консоль 0, когда в первом случае выполняется MoveNext(), а во втором не выполняется?
using System;
using System.Collections.Generic;
namespace tetst
{
public class A
{
static IEnumerable<int> test()
{
yield return 0;
yield return 5;
yield return 10;
yield return 20;
yield return 50;
}
static void Main()
{
IEnumerator<int> t = test().GetEnumerator();//первый случай
t.MoveNext();
Console.WriteLine(t.Current);//0
IEnumerator<int> x = test().GetEnumerator();//второй случай
//x.MoveNext();
Console.WriteLine(x.Current);//0
Console.ReadKey();
}
}
}
Источник: Stack Overflow на русском