Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Статические свойства

Статические свойства

В C# также поддерживаются статические свойства. Вспомните из главы 3, что статические члены доступны на уровне класса, а не экземпляра (объекта) этого класса. Например, предположим, что тип Employee определяет элемент статических данных, представляющий название организации, в которой трудоустроен работник. Можно определить статическое свойство (например, уровня класса) так, как показано ниже.

// Статические свойства должны оперировать со статическими данными!
public class Employee {
 private static string companyName;
 public static String Company {
  get { return companyName; }
  set { companyName = value; }
 }
 …
}

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

// Установка и чтение названия компании,
// в которой трудоустроены эти работники…
public static int Main(string[] args) {
 Employee.Company = "Intertech training";
 Console.WriteLine("Эти люди, работают в {0} ", Employee.Company);
 …
}

Также вспомните из главы 3, что в C# поддерживаются статические конструкторы. Поэтому, если вы хотите, чтобы статическое свойство companyName всегда устанавливалось равным Intertech Training, можете добавить в класс Employee член следующего вида.

// Статический конструктор без модификаторов доступа и аргументов.
public class Employee {
 …
 static Employee() {
  companyName = "Intertech Training";
 }
}

В данном случае мы ничего не выиграли в результате добавления статического конструктора, если учесть, что тот же результат можно было бы достичь с помощью простого присваивания значения члену-переменной companyName, как показано ниже.

// Статические свойства должны оперировать со статическими данными!
public class Employee {
 private static string companyName = "Intertech Training";
}

Однако следует вспомнить о том. что статические конструкторы оказываются очень полезными тогда, когда значения для статических данных становятся известны только в среде выполнения (например, при чтении из базы данных).

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

Оглавление книги


Генерация: 1.486. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз