日期:2014-05-17  浏览次数:21471 次

很奇怪的问题,为什么在java中可以,在C#中不可以了??
namespace TextOverWrited
{
   public  class Animal
    {
       public Animal a = new Animal();// 为什么这句报 //System.StackOverflowException”类型的未经处理的异常出现在 TextOverWrited.exe 中。这个错误//啊???
        public    virtual void  eatFool() {
            Console.WriteLine("在父类中吃》》》》");
            Console.ReadLine();
        }
        protected void say()
        {
            Console.WriteLine("在父类说话");
            Console.ReadLine();
        }
    }
}

    public class Cat : Animal 
    {
       
        public   override void eatFool()
        {
              Cat cat =new Cat ();
            Console.WriteLine("在子类中");
            cat.say();
            Console.ReadLine();
        }
        
    }
}

c#

------解决方案--------------------
循环构造了。
我很惊诧,JAVA能不报错???你确定吗?
------解决方案--------------------
public Animal a = new Animal(); 这句根本就不需要
------解决方案--------------------
死循环了,new  Animal 会新建实例,而新建实例又会new  Animal,死循环
------解决方案--------------------
一楼说的对,循环构造函数了。
------解决方案--------------------
这不是死循环了吗?
------解决方案--------------------