在C#入門經典第六版的第12章裏,有如下代碼:
public class Farm<T> : IEnumerable<T>
where T : Animal
{
private List<T> animals = new List<T>();
public List<T> Animals
{
get
{
return animals;
}
}
public IEnumerator<T> GetEnumerator()
{
return animals.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return animals.GetEnumerator();
}
public void MakeNoises()
{
foreach (T animal in animals)
{
animal.MakeANoise();
}
}
public void FeedTheAnimals()
{
foreach (T animal in animals)
{
animal.Feed();
}
}
public Farm<Cow> GetCows()
{
Farm<Cow> cowFarm = new Farm<Cow>();
foreach (T animal in animals)
{
if (animal is Cow)
{
cowFarm.Animals.Add(animal as Cow);
}
}
return cowFarm;
}
}
上面的紅色代碼讓我好一陣琢磨。
好好地最究一下,當然要看msdn了,首先聲明一下:下面的討論都是在.Net Framework 4的環境下開展的。
IEnumerable 接口
公開枚舉器,該枚舉器支持在非泛型集合上進行簡單迭代。
命名空間: System.Collections
程序集: mscorlib(在 mscorlib.dll 中)
IEnumerable 類型公開以下成員。