如果构造函数未设置成private,被误new后,将丢失静态变量数据。
class Program
{
static void Main(string[] args)
{
Singleton.Instance().Data=new Dictionary<int, string>();
Singleton.Instance().Data.Add(1,"1");
Singleton.Instance().Data.Add(2, "2");
Singleton.Instance().Data.Add(3, "3");
Singleton.Instance().Data.Add(4, "4");
var item = new Singleton();
Console.WriteLine(item.Data.Count);
}
}
public class Singleton
{
private static readonly Singleton instance = new Singleton();//直接实例化
public Dictionary<int, string> Data { get; set; }
public Singleton() { } //如果不设置为private,被误用之后会将静态变量清空
public static Singleton Instance()
{
return instance;
}
}
public class Entity
{
public int Index { get; set; }
public string Name { get; set; }
}

浙公网安备 33010602011771号