using System; using System.Collections.Generic; using System.Text; namespace 单例模式 { class Program { static void Main(string[] args) { Singleton s1 = Singleton.GetInstance(); Singleton s2 = Singleton.GetInstance(); if (s1 == s2) { Console.WriteLine("Objects are the same instance"); } Console.Read(); } } class Singleton { private static Singleton instance; private static readonly object syncRoot = new object(); private Singleton() { } public static Singleton GetInstance() { if (instance == null) { lock (syncRoot)//用锁来防止两个线程同时访问 { if (instance == null)//因此还需要在判断一下,实例是否为空,比如第一个线程进来创建后,紧接着第二个线程进来就无法创建第二个实例了 { instance = new Singleton(); } } } return instance; } } //public sealed class Singleton //{ // private static readonly Singleton instance = new Singleton(); // private Singleton() { } // public static Singleton GetInstance() // { // return instance; // } //} }