问个泛型类的问题

yxlovemoney 2008-08-07 12:00:22
现在有这样几个类

//这个是父类

public abstract class Animal
{
protected string name;
public string Name
{
get
{
return name;
}
set { name = value; }
}
public Animal()
{
name = "the animal with no name";
}
public Animal(string newName)
{
name = newName;
}

public void Feed()
{
Console.WriteLine("{0} has been fed.", name);
}
public abstract void MakeANoise();
}


然后下面是子类

//Cow子类

public class Cow : Animal
{
public void Milk()
{
Console.WriteLine("{0} has been milked.", name);
}
public Cow(string newName)
: base(newName)
{ }
public override void MakeANoise()
{
Console.WriteLine("{0} says 'moo!'", name);
}
}



//SuperCow

public class SuperCow:Cow
{
public void Fly()
{
Console.WriteLine("{0} is flying!", name);
}
public SuperCow(string newName) : base(newName) { }

public override void MakeANoise()
{
Console.WriteLine("{0} says 'here I come to save the day!'", name);
}
}


然后在一个泛型类里面这么写

public class Farm<T> : IEnumerable<T>
where T : Animal
{
private List<T> animals = new List<T>();

public List<T> Animals
{
get { return animals; }
}
public IEnumerable<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;
}
}


这都是按照书上写的,但为什么会报这样的错
错误 1 “ConsoleExample.Farm<T>”不会实现接口成员“System.Collections.Generic.IEnumerable<T>.GetEnumerator()”。“ConsoleExample.Farm<T>.GetEnumerator()”或者是静态、非公共的,或者有错误的返回类型。 G:\c#file\ConsoleExample\ConsoleExample\Farm.cs 9 18 ConsoleExample
请问应该怎么解决呢?
...全文
46 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinruijie1257 2009-06-12
  • 打赏
  • 举报
回复
public IEnumerable<T> GetEnumerator()
{
return animals.GetEnumerator();
}
将IEnumerable<T>删除掉,重新写为IEnumerator<T>就行了。
LQknife 2008-08-07
  • 打赏
  • 举报
回复
Animals没有实现IEnumerator 接口?
wangchao1982 2008-08-07
  • 打赏
  • 举报
回复
你要用foreach循环必须实现ienumerator接口啊(好像实现别的接口也可以)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧