Figure 2 Implementing IEnumerable<string>
กก
public class CityCollection : IEnumerable<string>
{
   string[] m_Cities = {"New York","Paris","London"};

   public IEnumerator<string> GetEnumerator()
   {
      return new MyEnumerator(this);
   }
   //Nested class definition 
   class MyEnumerator : IEnumerator<string>
   {
      CityCollection m_Collection;
      int m_Current; 
      public MyEnumerator(CityCollection collection)
      {
         m_Collection = collection;	
         m_Current = -1;
      }
      public bool MoveNext()
      {
         m_Current++;
         if(m_Current < m_Collection.m_Cities.Length)
            return true;
         else
            return false;
      }
      public string Current
      {
         get
         {
            if(m_Current == -1)
               throw new InvalidOperationException();
            return m_Collection.m_Cities[m_Current]; 
         }
      }
      public void Dispose(){}
   }
}