16

他のすべてのページが派生する BasePage クラスがあります。

public class BasePage

この BasePage には、常に実行する必要があるコードを含むコンストラクターがあります。

public BasePage()
{
    // Important code here
}

次のように、派生クラスに基本コンストラクターを強制的に呼び出しさせたいと思います。

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

これを強制するにはどうすればよいですか (できればコンパイル時に)。

4

4 に答える 4

29

基本コンストラクターは、常にある時点で呼び出されます。this(...)代わりに呼び出すbase(...)と、同じクラスの別のコンストラクターが呼び出されます。これは、さらに別の兄弟コンストラクターまたは親コンストラクターを呼び出す必要があります。遅かれ早かれbase(...)、基本クラスのパラメーターなしのコンストラクターを明示的または暗黙的に呼び出すコンストラクターに常に到達します。

さまざまなビット (変数初期化子など) の実行ポイントを含む、コンストラクター チェーンの詳細については、この記事を参照してください。

于 2008-11-27T15:48:53.817 に答える
11

引数をとらない基本クラス コンストラクターは、引数を明示的に取る他の基本クラス コンストラクターを呼び出さない場合、自動的に実行されます。

于 2008-11-27T15:46:24.900 に答える
3

明示的に呼び出さなくても、基本クラスのコンストラクターは常に呼び出されます。したがって、それが確実に行われるようにするために、追加の作業を行う必要はありません。

于 2008-11-27T15:46:36.490 に答える
1

基本コンストラクターの 1 つを常に呼び出す必要があり、基本コンストラクターが明示的に指定されていない場合は、既定のコンストラクターが呼び出されます。

編集:明確にするために言い換えました。

于 2008-11-27T15:47:15.333 に答える