Exemplo n.º 1
0
        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);
 }
Exemplo n.º 4
0
        public static Singleton2 GetInstance()
        {
            lock (_lock)
            {
                if (instance == null)
                {
                    instance = new Singleton2();
                }
            }

            return(instance);
        }
Exemplo n.º 5
0
 public static Singleton2 GetSingleton2()
 {
     if (_singleton2 == null)
     {
         lock (LockHelper)
         {
             if (_singleton2 == null)
             {
                 _singleton2 = new Singleton2();
             }
         }
     }
     return(_singleton2);
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 9
0
 /// <summary>
 /// 使用此方法销毁已创建的实例
 /// </summary>
 public void Reset()
 {
     _instance = null;
 }
Exemplo n.º 10
0
 public static Singleton2 Instance()
 {
     return(_instance ?? (_instance = new Singleton2()));
 }
 public static Singleton2 Instance()
 {
     return(_instance ?? (_instance = new Singleton2()));//变量定义中含有两个问号,意思是取所赋值??左边的,如果左边为null,取所赋值??右边的。
 }