ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: ironMan
15. августа 2011 18:15

Одним из преимуществ использования свойств является реализация методики отложенной инициализации. При этой методике некоторые члены класса не инициализируются, пока не потребуется. Отложенная инициализация дает преимущества, если у вас имеется класс с членами, на которые редко ссылаются и на инициализацию которых уходит много времени и ресурсов. Типичным примером могут служить ситуации, в которых требуется считать значения из базы данных или получить данные по сети. Если вам известно, что на эти члены ссылаются редко, а на их инициализацию требуется много ресурсов, то инициализацию полей можно отложить до вызова методов получателей. Для примера давайте рассмотрим класс, имеющий свойство, значение которого необходимо получать из базы данных. Допустим, у вас имеется многопользовательская система. При поставке этой системы заказчику вы продаете определенное количество лицензий. Количество лицензий означает количество экземпляров программы, которые могут быть одновременно запущены. Данные о количестве уже запущенных экземпляров программы хранятся на удаленном сервере в базе данных. Получить это значение возможно, лишь затратив большое количество ресурсов. Вашему классу необходима проверка лицензии только в редких случаях. Поэтому нет необходимости включать код для получения значения о количестве лицензий в конструктор класса. Проще включить код для инициализации поля в функцию получатель соответствующего свойства.



class Customer
{
private int licenseCount;
public int LicenseCount
{
get
{
/* get licenses count from remote */
/* server and store it in local variable */
return licenseCount;
}
}

...
}



( отрывок из книги В. В. Лабор "Си Шарп: Создание приложений для Windows" )



Постовой: Canon EOS 5D Mark 3 подробный обзор, тесты, снимки, характеристики.

Похожие записи


Виртуальные свойства в C#
Свойства, как и методы, могут быть перегружены в производных классах. Для свойств также могут задаваться модификаторы virtual, override или abstract. Подробно о наследовании говорилось в главе «Методы», сейчас я лишь хочу еще раз привести подробный пример использования механизма виртуализации с применением свойств: [code:c#] using System; enum COLORS { RE...

Многопоточный HTTP сервер на C#
Оригинал статьи здесь: Многопоточный сервер на C# за 15 минут Автор (на хабре): ertaquo C# довольно простой и гибкий язык. Вместе с .NET поставляется довольно много уже готовых классов, что делает его еще проще. Настолько, что вполне можно написать простой многопоточный HTTP-сервер для отдачи статического содержимого всего за 15 минут. Можно было бы использовать уже...

Как получить информацию о накопителях информации и/или логических дисках на C# ?
В .Net Framework для получения информации о накопителе служит класс DriveInfo из пространства имен System.IO. У него есть статический метод GetDrives(), который позволяет получить массив объектов класса DriveInfo. Каждый из элементов массива соответствует накопителю информации или логическому диску на одном из накопителей. Каждый из возвращенных объектов содержит осно...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий