我发现c#中派生类的构造函数后面一定要用base指明调用基类的哪个构造函数,否则默认用的无参构造函数,而此时如果恰好基类没有定义无参构造函数,就会报错,有没有人能解释一下这是为什么呢,为什么在调用派生类构造函数之前一定要先调用一下基类构造函数呢

解决方案 »

  1.   

    因为你写了new()约束
    所以必须要默认构造函数
      

  2.   

    父类有一个非静态方法FatherAction();子类继承了父类,但是子类自己并没有实现FatherAction这个方法你new了一个子类,却是能使用FaterAction这个方法的,这是为什么呢?就是因为你在new子类的同时,父类也会被实例化,所以会去调父类的构造方法,就是这个原因
      

  3.   

    我今天突然想到了一个问题呀,那如果父类是抽象类呢,然后我new一个子类,用这个子类去调用父类的非静态方法FatherAction(),但这个时候父类是不能实例化的,这又怎么解释