private static void Part1() { var c = new CircleBuffer <int>(new[] { 1, 2, 3, 4, 5 }, 0); foreach (var item in c) { Console.WriteLine(item); } Console.WriteLine(); //-------------------------------- var myCollection = new MyCollection(new object[] { 1, 2, 3, 4, 5 }); foreach (var item in myCollection) { Console.WriteLine(item); } Console.WriteLine(); //-------------------------------- /* * Компилятор разворачивает foreach приблизительно в следующую конструкцию. * Не обязательно реализовывать интерфейсы IEnumerable/IEnumerator */ var wowCollection = new WowCollection(new int[] { 1, 2, 3, 4, 5 }); var enumerator = wowCollection.GetEnumerator(); try { while (enumerator.MoveNext()) { int value = enumerator.Current; Console.WriteLine(value); } } finally { enumerator.Dispose(); } Console.WriteLine(); //-------------------------------- foreach (var i in wowCollection) { foreach (var j in wowCollection) { Console.Write($" {i}{j} |"); } Console.WriteLine(); } Console.WriteLine(); //-------------------------------- var wowSharp2Iterable = new WowSharp2Iterable <int>(new int[] { 1, 2, 3, 4, 5 }); foreach (var item in wowSharp2Iterable) { Console.WriteLine(item); } }
public WowEnumerator(WowCollection wowCollection) { _wowCollection = wowCollection; _index = -1; }