首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请各位大大帮忙解决下一个泛型类的有关问题

2011-12-29 
请各位大大帮忙解决下一个泛型类的问题usingSystemusingSystem.CollectionsusingSystem.Collections.Gen

请各位大大帮忙解决下一个泛型类的问题
using   System;
using   System.Collections;
using   System.Collections.Generic;
using   System.Text;

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

                public   List <T>   Animals
                {
                        get
                        {
                                return   animals;
                        }
                }
                //实现IEnumerable接口
                public   IEnumerable <T>   GetEnumrator()
                {
                        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();
                        }
                }
                //得到所有Cow或者继承于其的类


                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;
                }
        }
}
这是 < <C#入门经典> > 里的一例题中的一个泛型类Farm.cs,用已有类Animal来约束。
为何我在编译运行时出现了错误“Ch12Ex04.Farm <T> ”不会实现接口成员“System.Collections.Generic.IEnumerable <T> .GetEnumerator()”E:\Chapter12\Ch12Ex04\Ch12Ex04\Farm.cs??请各位帮忙解答下,谢谢

[解决办法]
IEnumerator IEnumerable.GetEnumerator()
=========================================
public IEnumerator <T> GetEnumerator()
[解决办法]
將源碼貼出來,方便測試啊!
[解决办法]
源码是一个Animal.cs类,两个继承于其的Cow,Chicken类,和一个继承于Cow的SuperCow类
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Ch12Ex04
{
public abstract class Animal
{
protected string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
//构造函数2
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();
}
}
[解决办法]
Chick.cs类
using System;
using System.Collections.Generic;
using System.Text;

namespace Ch12Ex04
{
public class Chicken:Animal
{
public void LayEgg()
{
Console.WriteLine( "{0} has laid an egg. ", name);
}
public Chicken(string newName):base(newName)
{
}
public override void MakeANoise()
{
Console.WriteLine( "{0} says '咯咯 ' ", name);


}

}
}

热点排行