如果构造函数未设置成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; }
    }