Потокобезопасный одноэлементный класс не дает ожидаемого вывода, объясните логику этого вывода - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь создать потокобезопасный объект Singleton с кодом, найденным в Интернете. Ниже мой код.

public class SingleInstanceClass
    {
         public static int hitCount;
        private static readonly SingleInstanceClass instance = new SingleInstanceClass();
         private SingleInstanceClass()
        {
        }
        static SingleInstanceClass()
        { }
       public static SingleInstanceClass GetInstance
        {
             get
            {
                return instance;
            }

    }
        public void Display()
        {
            Console.WriteLine("Single Ton Class Function {0}",hitCount++);
        }
    }


//CLIENT CODE
class Program
    {
        static void Main(string[] args)
        {
            //Create 2 objects of the singleton class
            SingleInstanceClass obj1 = SingleInstanceClass.GetInstance;
            obj1.Display();
            SingleInstanceClass obj2 = SingleInstanceClass.GetInstance;
            obj2.Display();

            SingleInstanceClass obj3 = SingleInstanceClass.GetInstance;
            obj3.Display();
            SingleInstanceClass obj4 = SingleInstanceClass.GetInstance;
            obj4.Display();
            SingleInstanceClass obj5 = SingleInstanceClass.GetInstance;
            obj5.Display();//Validate if the address of obj1 and obj2 are same.
            //If object.ReferenceEquals() returns true objects are same
            //or else different.
            //In class is return same object again and again
            //It will print same objects.
            if (object.ReferenceEquals(obj1, obj2))
            {
                Console.WriteLine("Same objects");
            }
            else
            {
                Console.WriteLine("Different objects");
            }
            Console.ReadKey();
        }
    }
}

Я ожидаю,

первый экземпляр даст следующий вывод Функция однотонного класса 0 Однотонная функция класса 1 Однотонная функция класса 2 Однотонная функция класса 3 Функция однотонного класса 4 Одинаковые объекты

Второй экземпляр даст ниже

Функция класса одного тона 5 Функция однотонного класса 6 Однотонная функция класса 7 Однотонная функция класса 8 Функция однотонного класса 9 Одинаковые объекты

и т. Д.

Поскольку это одноэлементный класс, всем экземплярам клиента будет доступен только один экземпляр. но я получаю ниже для всех случаев

Функция класса одного тона 0 Однотонная функция класса 1 Однотонная функция класса 2 Однотонная функция класса 3 Функция однотонного класса 4 Одинаковые объекты

Почему счетчик сбрасывается. Что бы дать результат я ожидаю ..

...