如何在基类中声明构造函数,以便子类可以在不声明它们的情况下使用它们?

Ale*_*rte 3 c# inheritance multiple-constructors inherited-constructors

我希望子类使用其父类的构造函数.但似乎我总是需要在子类中再次定义它们才能使它工作,如下所示:

public SubClass(int x, int y) : base (x, y) {
    //no code here
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道我是不是在父类中正确地声明了构造函数,或者根本没有直接的构造函数继承?

Ode*_*ded 9

你没有做错任何事.

在C#中,实例构造函数不会被继承,因此在继承类型上声明它们并链接到基础构造函数是正确的方法.

根据规范§1.6.7.1:

与其他成员不同,实例构造函数不是继承的,并且除了在类中实际声明的实例之外,没有实例构造函数.如果没有为类提供实例构造函数,则会自动提供没有参数的空构造函数.