static void Main(string[] args) { Singleton2 s1 = Singleton2.GetInstance(); Singleton2 s2 = Singleton2.GetInstance(); if (s1 == s2) { Console.WriteLine("两个对象是相同的"); } Console.Read(); }
private static void TestLasyInitialSingleton() { Console.WriteLine("延迟初始化实例"); Singleton2 singleton2 = Singleton2.Instance(); singleton2.GetInfo(); singleton2.Reset(); Console.ReadLine(); }
public static Singleton2 GetSingleton() { lock (syncRoot) { if (instance == null) { instance = new Singleton2(); } } return(instance); }
public static Singleton2 GetInstance() { lock (_lock) { if (instance == null) { instance = new Singleton2(); } } return(instance); }
public static Singleton2 GetSingleton2() { if (_singleton2 == null) { lock (LockHelper) { if (_singleton2 == null) { _singleton2 = new Singleton2(); } } } return(_singleton2); }
static void Main(string[] args) { // var company1 = Singleton1.GetInstance("Company 1"); var company2 = Singleton1.GetInstance("Company 2"); Console.WriteLine(company1.Name); // 1 Console.WriteLine(company2.Name); // 1 // (new Thread(() => { var os1 = Singleton2.GetInstance("Windows 10"); Console.WriteLine(os1.Name); })).Start(); var os2 = Singleton2.GetInstance("Ubuntu"); Console.WriteLine(os2.Name); // (new Thread(() => { var createDate1 = Singleton3.GetInstance(); Console.WriteLine(createDate1.Date.Ticks); })).Start(); var createDate2 = Singleton3.GetInstance(); Console.WriteLine(createDate2.Date.Ticks); // (new Thread(() => { var modifyDate1 = Singleton4.GetInstance(); Console.WriteLine(modifyDate1.Date.Ticks); })).Start(); var modifyDate2 = Singleton4.GetInstance(); Console.WriteLine(modifyDate2.Date.Ticks); // (new Thread(() => { var lazy1 = Singleton5.GetInstance(); Console.WriteLine(lazy1.Id); })).Start(); var lazy2 = Singleton5.GetInstance(); Console.WriteLine(lazy2.Id); }
public static void Main(string[] args) { //0 var i0 = Singleton.GetInstance(); Console.WriteLine($"Singleton {ReferenceEquals(i0, Singleton.GetInstance())}"); //1 var i1 = Singleton1.GetInstance(); Console.WriteLine($"Singleton1 {ReferenceEquals(i1, Singleton1.GetInstance())}"); //2 var i2 = Singleton2.GetInstance(); Console.WriteLine($"Singleton2 {ReferenceEquals(i2, Singleton2.GetInstance())}"); Console.ReadLine(); }
public static void Main(string[] args) { // //0 // var i0 = Singleton.GetInstance(); // Console.WriteLine($"Singleton {ReferenceEquals(i0, Singleton.GetInstance())}"); // //1 // var i1 = Singleton1.GetInstance(); // Console.WriteLine($"Singleton1 {ReferenceEquals(i1, Singleton1.GetInstance())}"); // //2 // var i2 = Singleton2.GetInstance(); // Console.WriteLine($"Singleton2 {ReferenceEquals(i2, Singleton2.GetInstance())}"); Console.WriteLine($"Singleton"); Enumerable.Range(1, 10).Select(i => Task.Run(() => { Console.WriteLine($"{Singleton.GetInstance().GetHashCode()}"); })).WhenAll().Wait(); Console.WriteLine($"Singleton1"); Enumerable.Range(1, 10).Select(i => Task.Run(() => { Console.WriteLine($"{Singleton1.GetInstance().GetHashCode()}"); })).WhenAll().Wait(); Console.WriteLine($"Singleton2"); Enumerable.Range(1, 10).Select(i => Task.Run(() => { Console.WriteLine($"{Singleton2.GetInstance().GetHashCode()}"); })).WhenAll().Wait(); Console.WriteLine($"Singleton3"); Enumerable.Range(1, 10).Select(i => Task.Run(() => { Console.WriteLine($"{Singleton3.GetInstance().GetHashCode()}"); })).WhenAll().Wait(); Console.ReadLine(); }
/// <summary> /// 使用此方法销毁已创建的实例 /// </summary> public void Reset() { _instance = null; }
public static Singleton2 Instance() { return(_instance ?? (_instance = new Singleton2())); }
public static Singleton2 Instance() { return(_instance ?? (_instance = new Singleton2()));//变量定义中含有两个问号,意思是取所赋值??左边的,如果左边为null,取所赋值??右边的。 }