2
基本コンストラクタを呼び出す前に、最初に派生クラスコンストラクタを呼び出す必要があるクラスがあります。私は、次のコードで、基本コンストラクタが最初に呼び出されることを知っています:コンストラクタを継承することによるコンストラクタ呼び出しの逆順
public class A {
protected A() {
//do something
}
}
public class B : A {
public B() : base() {
//do something else
}
}
その順序を逆にする方法はありますか? doConstructor()のような基本クラスに保護メソッドを追加作成し、最初のタスクの後に派生コンストラクタでそれを呼び出す可能性のある解決策の1つは、コンパイラがそれを受け付けないため、読み取り専用フィールドでは不可能です。
テンプレートメソッドパターン – abhilash
私の画面からコードを読み込んでいるようです; o)コンストラクタからの仮想メンバーの呼び出しは通常は勧められますが、注意してください。 –
ベースコンストラクタ( 'A')で仮想メソッドを呼び出すのは少し危険です。 'B'のオーバーライドは** B **のコンストラクタの前に実行されています。これは初期化されていないフィールドに問題を引き起こす可能性があります。私は一般的にここで注意するか、またはより良い:** post ** - ctor 'Initialize'ステップ。 –