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 回しか存在できません。
_data
static として宣言する必要がありますか?
- 機能的な違いはありますか?
- パフォーマンスの違いはありますか?
- 静的または非静的を好む他の理由はありますか?