Re[5]: Property Accessibility
От: Jewgenis Германия  
Дата: 20.05.06 21:26
Оценка:
Здравствуйте, kpumuk, Вы писали:

K>>Создавать сразу объект A не имеет смысла, он ведь может и не понадобиться. Вот пример:


Спасибо большое! Я разобрался... Вот только теперь хотел бы подтвердить свои мысли
Из функции Main() я вызываю несколько раз метод longPathButtonClick(), это как раз приводит к тому, что должен создаться объект класса А. В случае с new будет выделенна память несколько раз, а если использовать свойство, то объект создастся только один раз... Если все так, то использование прайват в определении свойства ясно... Прошу меня извинить, если я что-то недопонял и написал не так...

    class A
    {
        public A()   // Дефолтный конструктор
        {
            Console.WriteLine("Default constructor call for class A");
        }

        // Сложные вычисления

    }

    class B
    {
        public B()   // Дефолтный конструктор
        {
            Console.WriteLine("Default constructor call for class B");
        }

        private A _a;
        
        public A A
        {
            get
            {
                if (_a == null) _a = new A();
                return _a;
            }
        }

        public void longPathButtonClick()
        {
            Console.WriteLine("The Button was clicked!!!");
            //  _a = new A();   // В этом случае создается много копий одного объекта...
            //  _a = A;         // В этом случае объект создается только один раз...
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            B CB = new B();

            CB.longPathButtonClick();
            CB.longPathButtonClick();
            CB.longPathButtonClick();
            CB.longPathButtonClick();
        }
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.