Implement IEnumerable and IEnumerator : IEnumerator « Data Structure « C# / CSharp Tutorial






using System; 
using System.Collections; 
 
class MyClass : IEnumerator, IEnumerable { 
  char[] chrs = { 'A', 'B', 'C', 'D' }; 
  int index = -1; 
 
  // Implement IEnumerable. 
  public IEnumerator GetEnumerator() { 
    return this; 
  } 
 
  // The following methods implement IEnumerator. 
 
  // Return the current object. 
  public object Current { 
    get { 
      return chrs[index]; 
    } 
  } 
 
  // Advance to the next object.  
  public bool MoveNext() { 
    if(index == chrs.Length-1) { 
      Reset(); // reset enumerator at the end. 
      return false; 
    } 
     
    index++; 
    return true; 
  } 
    
  // Reset the enumerator to the start. 
  public void Reset() { 
    index = -1; 
  }  
} 
 
class MainClass { 
  public static void Main() { 
    MyClass mc = new MyClass(); 
 
    // Display the contents of mc. 
    foreach(char ch in mc) 
      Console.Write(ch + " "); 
 
    Console.WriteLine(); 
 
    // Display the contents of mc, again. 
    foreach(char ch in mc) 
      Console.Write(ch + " "); 
 
    Console.WriteLine(); 
  } 
}
A B C D
A B C D








11.44.IEnumerator
11.44.1.A simple example of an iterator.
11.44.2.Iterated values can be dynamically constructed.
11.44.3.Use named iterators
11.44.4.Use the Enumerable pattern
11.44.5.Implement IEnumerable and IEnumerator
11.44.6.Define custom enumerators and use foreach to loop through
11.44.7.Build your own IEnumerator/IEnumerable and use it in foreach loop
11.44.8.Circular Iterator
11.44.9.Iteration Sample
11.44.10.Iterator Workflow
11.44.11.IEnumerator and ArrayList, BitArray, Hashtable and array