Программирование на C# - ООП C# - Свойства

Программирование на C# - ООП C#

ООП С# Свойства

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

Программисты на Visual Basic обнаружат, что свойства C# почти полностью соответствуют свойствам в моделях классов VB, к тому же используются точно так же.

Свойства предусмотрены для ситуаций, в которых необходимо, чтобы вызов метода выглядел как обычное поле. Вы можете увидеть это на примере поля minPasswordLength класса Authenticator. В этом разделе мы расширим этот класс, чтобы пользователи могли читать и модифицировать это поле без необходимости вызывать метод GetMinPasswordLength(), представленный ранее.

Свойство C# — это метод или пара методов, выглядящих для внешнего мира так, будто они являются одним полем. Чтобы создать свойство минимальной длины пароля, модифицируем код класса Authenticator следующим образом:

 
public static uint MinPasswordLength
{
get
{
return minPasswordLength;
}
set
{
minPasswordLength = value;
}
} 

Как видите, определение свойства C# подобно определению поля, за исключением того, что после имени свойства идет блок кода, заключенный в фигурные скобки. В блоке кода может быть два метода, называемые get и set. Они известны как средство доступа get и средство доступа set. Обратите внимание, что хотя никакой параметр не указан явно в определении средства доступа set, такой параметр неявно подразумевается и носит имя value. К тому же средство доступа get всегда возвращает тот же тип данных, который имеет свойство, к которому оно относится (в данном случае uint).

Теперь, чтобы получить значение minPasswordLength, можно воспользоваться следующим синтаксисом:

 
uint i = Authenticator.MinPasswordLength; 

На самом деле здесь вызывается средство доступа get свойства MinPasswordLength. В данном случае этот метод реализован так, чтобы просто вернуть значение поля minPasswordLength.

Для установки значения поля minPasswordLength, используя свойство, применяется следующий код:

 
Authenticator.MinPasswordLength = 7; 

Этот код вызывает средство доступа set свойства MinPasswordLength, которое реализовано так, что просто присваивает необходимое значение (7) полю minPasswordLength. Как упоминалось ранее, set имеет неявный параметр по имени value.

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


 

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


Защитный код
Обновить