如何在C#中强制调用基础构造函数?

17

我有一个BasePage类,所有其他页面都从它派生出来:

public class BasePage

这个 BasePage 有一个构造函数,其中包含必须始终运行的代码:

public BasePage()
{
    // Important code here
}

我希望强制派生类调用基础构造函数,像这样:

public MyPage
    : base()
{
    // Page specific code here
}

如何在编译时执行此操作?

4个回答

30
基本构造函数总会在某些时刻被调用。如果你调用this(...)而不是base(...),那么它会调用同一类中的另一个构造函数 - 该构造函数再次必须调用另一个兄弟构造函数或父级构造函数。迟早你总会到达一个要么显式调用base(...)要么隐式调用基类的无参构造函数的构造函数。
请参阅该文章以了解更多有关构造函数链接的信息,包括各个部分(如变量初始化程序)的执行点。

12

如果你没有显式调用任何带参数的基类构造函数,那么不带参数的基类构造函数会自动运行。


2
那么这是否意味着我可以删除包含:base()的那一行? - Tom Robinson

3
基类构造函数总是被调用,即使您没有显式调用它。因此,您不需要进行任何额外的工作来确保这一点。

2

必须始终调用其中一个基础构造函数,当未明确声明基础构造函数时,默认构造函数将被调用。

编辑:为了更清晰表达,重新措辞。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接