是否有可能使派生类继承非0参数构造函数?

时间:2011-02-11 06:50:30

标签: c# constructor

my last question上构建,是否可以使派生类继承其基类的构造函数?例如,如果我定义了两个这样的类:

class Base {
    public Base(){}
}

public Derived() {
}

实例化派生类时,将自动调用基类的构造函数。如果我将另一个构造函数添加到基类,

class Base {
    public Base(int x){}
}

是否可以使用 构造函数构造派生的类?我的意思是不必添加像

这样的东西
public Derived() {
     public Derived(int x) : base(x) {}
}

2 个答案:

答案 0 :(得分:3)

不,不是。你必须明确添加它们; only 默认值是调用base()的无参数构造函数,如果不添加任何构造函数,则会得到它。在少数情况下它可能会很好(特别是当基础上有很多构造函数时),而我想象有一些工具(可能是R#?我没有检查过)可能有助于自动化它 - 但没有任何内置。

答案 1 :(得分:2)

排序......

class Base {
    protected Base() : this(default(int)) {}
    public Base(int x){}
}

public Derived() {
}

将强制Derived使用参数的默认值调用重载的构造函数。这可能是,也可能不是,你想要发生的事情。通过将默认构造函数标记为protected,可以防止外部调用者使用默认构造函数进行实例化,但允许派生类执行此操作。