/// <summary> /// 获取线程安全的单例实例 /// 在第一次调用的时候创建单例实例 /// </summary> /// <returns></returns> public static SingletonV2 GetInstance() { //使用锁来保证线程安全 if (_instance == null) { lock (lockObj) { if (_instance == null) { _instance = new SingletonV2(); } } } return _instance; }
/// <summary> /// 获取线程安全的单例实例 /// 在第一次调用的时候创建单例实例 /// </summary> /// <returns></returns> public static SingletonV2 GetInstance() { //使用锁来保证线程安全 if (_instance == null) { lock (lockObj) { if (_instance == null) { _instance = new SingletonV2(); } } } return(_instance); }
static void Main(string[] args) { ClassicSingleton classicSingleton1 = ClassicSingleton.GetInstance(); ClassicSingleton classicSingleton2 = ClassicSingleton.GetInstance(); Console.WriteLine(classicSingleton1 == classicSingleton2); SingletonV1 singletonV1_1 = SingletonV1.GetInstance(); SingletonV1 singletonV1_2 = SingletonV1.GetInstance(); Console.WriteLine(singletonV1_1 == singletonV1_2); SingletonV2 singletonV2_1 = SingletonV2.GetInstance(); SingletonV2 singletonV2_2 = SingletonV2.GetInstance(); Console.WriteLine(singletonV2_1 == singletonV2_2); Console.ReadLine(); }