在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 类型公开以下成员。