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

.net类中实例化的异常

2014-01-12 
.net求助类中实例化的错误请教了,为什么下面的写法是错误的,新手学.net,希望多多指点。Animal是父类,Dog继

.net求助类中实例化的错误
请教了,为什么下面的写法是错误的,新手学.net,希望多多指点。Animal是父类,Dog继承自它,在Dog类中这样写为什么错了?谢谢!
class Dog:Animal
    {      
       Dog  dog1 = new Dog();  
        
        public void Qd()
        {
              dog1.Jiao();
        }        
    }
[解决办法]
你需要在Animal定义一个protected或者public的方法Jiao
或者在Dog类定义一个这样的方法。
[解决办法]
.无限递归.
[解决办法]

引用:
请教了,为什么下面的写法是错误的,新手学.net,希望多多指点。Animal是父类,Dog继承自它,在Dog类中这样写为什么错了?谢谢!
class Dog:Animal
    {      
       Dog  dog1 = new Dog();  
        
        public void Qd()
        {
              dog1.Jiao();
        }        
    }


Dog  dog1 = new Dog();
这一句会导致无限递归,然后stackoverflow
[解决办法]
this.Jiao()就可以了。
[解决办法]
楼主,把Animal这个类的代码也贴来看下
[解决办法]
引用:
我不知道为什么Dog  dog1 = new Dog();  这句话会造成无限递归?这不就是实例化一个类吗?


实例化了一个dog,为了实例化这个dog,它又要实例化一个dog,为了实例化那个dog,还得实例化一个dog。
[解决办法]
实例方法使用到当前类的对象,一般是用this来表示
[解决办法]
Dog  dog1 = new Dog();  


创建一个Dog对象 以后 会先对这个对象分配内存空间,然后分配内存空间的时候又会走到这句话然后又创建一个对象新对象分配内存空间再一次创建新对象 无限递归
[解决办法]
在一个类中不能有自己这个类的属性 如果有的话 也必须不能再构造函数执行前和执行时实例化他
[解决办法]
实例化的时候,字段是在构造函数执行前执行的
Dog  dog1 = new Dog();这是个字段,所以无限循环的

热点排行