Effective C# 3rd 読書メモ 13 静的メンバーは適切な初期化を行う

静的クラスのメンバーの初期化には、初期化子または静的コンストラクタを使用すべきである。
インスタンスのコンストラクタや、何らかのprivateメソッド、その他の方法は使用すべきではない。
初期化に複雑な処理が必要なら、Lazy<T>クラスによる遅延初期化を考慮すべきだ。

以下は、初期化子を使用したSingletonパターンの実装例である。

public class MySingleton
{
    public static MySingleton Instance { get; } = new MySingleton();

    private MySingleton()
    {
    }
}

静的コンストラクタは、初めてクラスにアクセスされた際に自動的に実行される。
静的コンストラクタは1つだけ定義可能で、引数をとることはできない。
静的コンストラクタを使用する理由として、最も一般的なのは初期化時の例外処理である。

static MySingleton()
{
    try
    {
        Instance = new MySingleton();
    }
    catch
    {
        // 例外発生時の復帰処理
    }
}

参考: Lazy クラス

コメントをどうぞ

コメントを残す