关于构造函数

在c#中,如果没有提供构造函数,编译器会在后台创建一个默认的构造函数。这是一个非常基本的构造函数,它只能把所有的成员字段初始化为标准的默认值(如引用类型为空引用,数字类型为0,boo为false)。

但注意,如果提供了带参数的构造函数,编译器便不会自动提供默认的构造函数,只有在没有定义任何构造函数的时候,编译器才会自动提供默认的构造函数。

由上上一篇我们知道,在初始化一个派生类时,会调用派生类的构造函数,并且会先调用父类的构造函数,在默认情况下是父类的默认构造函数。也就说,当派生类没有显示的调用父类的有参构造函数(当父类提供了自己的构造函数时),父类必须提供一个Parameterless的构造函数(和默认的构造函数结构相同)。

如上面的程序,如果注释public int Class2(){},

编译时便会报错:Class2' does not contain a constructor that takes '0' arguments 。

如果在派生类中显示的说明调用父类的有参构造函数,便不需要Parameterless的构造函数了。

此时编译便不会报错(debug程序到 public Class1(int i) : base(1),编译器就知道应该调用父类中的有参构造函数了。

 


 

 

posted @ 2008-10-16 23:48  GrPro.Liu  阅读(217)  评论(0编辑  收藏  举报