Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
 public MyCollectionEnumerator(CircleBuffer <T> myCollection)
 {
     _myCollection = myCollection;
     _index        = -1;
 }