static void Main() { Console.WriteLine("Первое обращение к экземпляру BigObject..."); // Создание объекта происходит только при этом обращении к объекту. Console.WriteLine(BigObject.GetInstance()); Console.WriteLine("Второе обращение к экземпляру BigObject..."); Console.WriteLine(BigObject.GetInstance()); // Delay. Console.ReadKey(); }
// Метод возвращает экземпляр BigObject, при этом он создаёт его, если тот ещё не существует. public static BigObject GetInstance() { // Исключение возможности создания двух объектов в многопоточном приложении. if (instance == null) { lock (typeof(BigObject)) { if (instance == null) { instance = new BigObject(); } } } return(instance); }