6

Web を見回すと、(スレッドセーフな) シングルトンを (C# で) 実装するこの単純なパターンを見てきました。

public sealed class MySingleton
{
    private static readonly MySingleton _instance = new MySingleton();

    private string[] _data = new string[10];

    // Private constructor, so no outsiders have access.
    private MySingleton()
    {
        // Initialize _data member here
    }

    // Static method to provide access to instance
    public static MySingleton Instance
    {
      get { return _instance; }
    }

    public string GetStringCount
    {
        return _data.Length;
    }

}

静的メソッド_instanceからアクセスするため、メンバーを静的として宣言する必要があることを理解しています。Instance()

しかし、他のメンバーは static として宣言する必要がありますか? 定義上、シングルトンは 1 回しか存在しないため、静的変数が 1 回しか存在しないのと同様に、メンバーも (1 つのインスタンスに対して) 1 回しか存在できません。

_datastatic として宣言する必要がありますか?

  • 機能的な違いはありますか?
  • パフォーマンスの違いはありますか?
  • 静的または非静的を好む他の理由はありますか?
4

2 に答える 2