Книга: C# для профессионалов. Том II

Свойства

Свойства

Свойства не имеют эквивалента в ANSI C++, хотя они были введены как расширение в Microsoft Visual C++. Свойство является методом или парой методов, которые синтаксически оформлены для представления в вызывающем коде, как будто свойство является полем. Они существуют для ситуации, когда интуитивно удобнее вызывать метод с помощью синтаксиса поля, очевидным примером будет случай закрытого поля, которое должно быта инкапсулировано с помощью оболочки из открытых методов доступа. Предположим, что класс имеет такое поле length типа int. Тогда в C++ оно инкапсулируется с помощью методов GetLength() и SetLength(). Необходимо будет обращаться к нему извне класса:

// MyObject является экземпляром рассматриваемого класса
MyObject.SetLength(10);
int Length = MyObject.GetLength();

В C# можно реализовать эти методы, как аксессоры (методы доступа) get и set свойства Length. Тогда запишем

// MyObject является экземпляром рассматриваемого класса
MyObject.Length = 10;
int length = MyObject.Length;

Чтобы определись эти методы доступа, свойство будет определяться следующим образом:

class MyClass {
 private int length;
 public int Length {
  get {
   return length;
  }
  set {
   Length = value;
  }

Хотя методы доступа get и set реализованы здесь, чтобы просто возвращать или задавать поле length, в эти методы можно поместить любой другой требуемый код C# так же, как это обычно делается в методе. Например, добавить некоторую проверку данных в метод доступа set. Отметим, что метод доступа set возвращает void и получает дополнительный неявный параметр с именем value.

Можно опустить любой из методов доступе get или set из определения свойства, и в этом случае свойство осуществляет соответственно либо только запись, либо только чтение.

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


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