关于构造函数
在c#中,如果没有提供构造函数,编译器会在后台创建一个默认的构造函数。这是一个非常基本的构造函数,它只能把所有的成员字段初始化为标准的默认值(如引用类型为空引用,数字类型为0,boo为false)。
但注意,如果提供了带参数的构造函数,编译器便不会自动提供默认的构造函数,只有在没有定义任何构造函数的时候,编译器才会自动提供默认的构造函数。
由上上一篇我们知道,在初始化一个派生类时,会调用派生类的构造函数,并且会先调用父类的构造函数,在默认情况下是父类的默认构造函数。也就说,当派生类没有显示的调用父类的有参构造函数(当父类提供了自己的构造函数时),父类必须提供一个Parameterless的构造函数(和默认的构造函数结构相同)。
如上面的程序,如果注释public int Class2(){},
编译时便会报错:Class2' does not contain a constructor that takes '0' arguments 。
如果在派生类中显示的说明调用父类的有参构造函数,便不需要Parameterless的构造函数了。