Mega Code Archive

 
Categories / C# / Class Interface
 

Collection is iterated using the IEnumerator interface

using System; using System.Collections; public class Starter {     public static void Main() {         SimpleCollection simple = new SimpleCollection(new object[] { 1, 2, 3, 4, 5, 6, 7 });         IEnumerator enumerator = simple.GetEnumerator();         while (enumerator.MoveNext()) {             Console.WriteLine(enumerator.Current);         }     } } public class SimpleCollection : IEnumerable {     public SimpleCollection(object[] array) {         items = array;     }     public IEnumerator GetEnumerator() {         return new Enumerator(items);     }     private object[] items = null; } public class Enumerator : IEnumerator {     public Enumerator(object[] items) {         elements = new object[items.Length];         Array.Copy(items, elements, items.Length);         cursor = -1;     }     public bool MoveNext() {         ++cursor;         if (cursor > (elements.Length - 1)) {             return false;         }         return true;     }     public void Reset() {         cursor = -1;     }     public object Current {         get {             if (cursor > (elements.Length - 1)) {                 throw new InvalidOperationException("Enumeration already finished");             }             if (cursor == -1) {                 throw new InvalidOperationException(                     "Enumeration not started");             }             return elements[cursor];         }     }     private int cursor;     private object[] elements = null; }