环顾网络,我看到了这个实现(线程安全)单例(在 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()
方法访问的。
但是其他成员应该被声明为静态的吗?根据定义,单例只存在一次,因此成员也只能存在一次(对于单个实例),就像静态变量只存在一次一样。
我应该声明_data
为静态的吗?
- 会不会有功能上的区别?
- 有什么性能差异吗?
- 还有其他喜欢静态或非静态的理由吗?