Книга: 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
из определения свойства, и в этом случае свойство осуществляет соответственно либо только запись, либо только чтение.
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- 4. Свойства унарных операций
- 3. Свойства бинарных операций
- Ключевые свойства форм
- 1.1.5. Свойства и особенности туруслуг и турпродуктов
- Свойства меню Пуск
- Работа с дополнительными свойствами файлов
- Глава 5. Товар и товарная категория. Характеристики и свойства
- Свойства StdErr, StdIn, StdOut
- Дополнительные свойства поля
- Устранение конфликтов имен WSDL с помощью свойства MessageName
- Атрибуты и свойства