【C#】コンストラクタで別のコンストラクタを呼び出す方法

コンストラクタはクラスを生成するときに呼ばれる特殊なメソッドです。オブジェクトの初期化の関係で複数の呼び出し口を設ける必要が出てきたときは「コンストラクタから別のコンストラクタを呼ぶ」という手法が意外と役に立ちます。

コンストラクタから別のコンストラクタを呼び出すには、オーバーロードしたコンストラクタを用意しておき、一つのコンストラクタから別のコンストラクタを ” : this ( … ) ” で呼び出すようにすることで可能です。

public class SampleClass
{
    public SampleClass() : this("Hello")
    {
        Console.WriteLine("Just a test class."); 
    } 

    public SampleClass(string word) 
    {
        Console.WriteLine($"{ word }, another test class."); 
    }
}

実行結果は以下のような感じとなります。

Hello, another test class.
Just a test class.

thisで指定した別オーバーロードのコンストラクタが先に処理されるので、オブジェクトの呼び出し方を広く定義しておき、最終的には一つのコンストラクタで生成するようにすることも可能です。ただし、複数のコンストラクタを経由するのは可読性が悪くなるので気を付けましょう。