一個類型要想支持foreach則必須實現(xiàn)IEnumerable,,IEnumerator兩個接口。 實例: using System; using System.Collections.Generic; using System.Windows.Forms; using System.Collections; namespace Randam { public class car { string name; int year; public car(string str, int num) { name = str; year = num; } public string Name { get { return name; } } } public class cars : IEnumerator,IEnumerable { private car[] carlist; int position = -1; //Create internal array in constructor. public cars() { carlist= new car[6] { new car("Ford",1992), new car("Fiat",1988), new car("Buick",1932), new car("Ford",1932), new car("Dodge",1999), new car("Honda",1977) }; } //IEnumerator and IEnumerable require these methods. public IEnumerator GetEnumerator() { return (IEnumerator)this; } //IEnumerator public bool MoveNext() { position++; return (position < carlist.Length); } //IEnumerable public void Reset() {position = 0;} //IEnumerable public object Current { get { try { return carlist[position]; } catch (IndexOutOfRangeException) { throw new InvalidOperationException(); } } } public static void { cars cars = new cars(); foreach (car s in cars) { Console.WriteLine("car’s value: {0}", s.Name); } IEnumerator ienum = (IEnumerator)cars.GetEnumerator(); ienum.Reset(); Console.WriteLine("***************************"); while (ienum.MoveNext()) { car s = (car)ienum.Current; Console.WriteLine("car’s value: {0}", s.Name); } } } } |
|