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

Tom*_*son 12 c# asp.net oop constructor c#-2.0

我有一个BasePage类,所有其他页面派生自:

public class BasePage
Run Code Online (Sandbox Code Playgroud)

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

public BasePage()
{
    // Important code here
}
Run Code Online (Sandbox Code Playgroud)

我想强制派生类调用基础构造函数,如下所示:

public MyPage
    : base()
{
    // Page specific code here
}
Run Code Online (Sandbox Code Playgroud)

我该如何强制执行此操作(最好是在编译时)?

Jon*_*eet 26

始终会在某个时刻调用基础构造函数.如果你调用this(...)而不是base(...)那个调用同一个类中的另一个构造函数 - 它还必须调用另一个兄弟构造函数或父构造函数.迟早你总会得到一个构造函数,它可以base(...)显式地或隐式地调用基类的无参数构造函数.

有关构造函数链接的更多信息,请参阅此文章,包括各个位的执行点(例如变量初始值设定项).


Joh*_*itb 10

如果不调用任何其他显式接受参数的基类构造函数,则自动运行不带参数的基类构造函数.

  • 那么这是否意味着我可以删除包含 : base() 的行? (2认同)