ホームに戻る
出典 :
C#でコンストラクタからコンストラクタを呼び出す。 - プログラムを書こう!
関連 :
[C++]委譲コンストラクタと継承コンストラクタ [C++]親クラスの関数をコール [C++]コンストラクタ初期化子
目次 :

コンストラクタからコンストラクタを呼ぶ

自身のクラスのコンストラクタから、(オーバーロードされた)別のコンストラクタを呼ぶ場合、
または、基底(親)クラスのコンストラクタを明示的に呼ぶ(特定のコンストラクタを指定する)場合は以下のように記述する。
// Hoge クラス class Hoge : Fuga { // 引数なしコンストラクタ // ⇒ 引数ありのコンストラクタを呼び出す public Hoge() : this("", 0) //< this に続けて、括弧内に引数を列挙する { : } // 引数ありコンストラクタ // ⇒ 基底クラスのコンストラクタを呼び出す public Hoge(string s, int i) : base(s, i) //< base に続けて、括弧内に引数を列挙する { : } }

注意が必要な点

派生クラスのインスタンスを生成する際は、基底クラスのコンストラクタが自動的に呼び出されるが、
ここで呼ばれる基底クラスのコンストラクタはデフォルトコンストラクタ(引数なしのコンストラクタ)に限定される
このため、基底クラスの引数ありコンストラクタを実行したい場合は、上記例のようにコンストラクタを明示的に指定する必要がある。
これは C++ と同様。