Effective C# 3rd 読書メモ 14 初期化ロジックの重複を最小限にする

[amazonjs asin=”B01N7C4P8N” locale=”JP” title=”Effective C# (Covers C# 6.0), (includes Content Update Program): 50 Specific Ways to Improve Your C# (Effective Software Development Series)”]

コンストラクタ初期化子を使うと、あるコンストラクタから別のコンストラクタを呼ぶことができる。
なお、以下では、C# 4.0で導入されたデフォルトパラメータを使用して、コンストラクタの数を減らしている。

public class MyClass
{
    private List<string> _coll;

    private string _name;

    public MyClass() :
        this(0, "")
    {
    }

    public MyClass(int initialCount = 0, string name = "")
    {
        _coll = (initialCount > 0) ? new List<string>(initialCount) : new List<string>();
        _name = name;
    }
}

なお、パラメータを必要としないコンストラクタと、全てのパラメータにデフォルト値が設定されたコンストラクタは異なる、という点に注意が必要である。
ジェネリクスで使う場合など、パラメータを必要としないコンストラクタが要求される場面があるため、全てのパラメータにデフォルト値を設定する場合、パラメータなしのコンストラクタも作成したほうがよい。

コメントを残す

コメントを残す