Figure 3 Simple Iterator
กก
CityCollection cities = new CityCollection();
//For this foreach loop:
foreach(string city in cities)
{
   Trace.WriteLine(city);
}
//The compiler generates this equivalent code:
IEnumerable<string> enumerable = cities;
IEnumerator<string> enumerator = enumerable.GetEnumerator();
using(enumerator)
{
   while(enumerator.MoveNext())
   {
      Trace.WriteLine(enumerator.Current);
   }
}