Процедуры свойств (Visual Basic)
Процедура свойства — это последовательность операторов Visual Basic, выполняющих действия над пользовательским свойством в модуле, классе или структуре. Процедуру свойства также называют методом доступа к свойству.
Visual Basic предоставляет следующие процедуры свойств.
Процедура Get возвращает значение свойства. Она вызывается при доступе к свойству в выражении.
Процедура Set устанавливает значение свойства, включая ссылку на объект. Она вызывается при присвоении значения свойству.
Обычно процедуры свойств определяются парами с помощью операторов Get и Set, но можно определить и одиночную процедуру, если свойство доступно только для чтения (Оператор Get) или только для записи (Инструкция Set (Visual Basic)).
Свойства можно определять в модулях, классах и структурах. По умолчанию свойства являются Public, что означает, что их можно вызывать из любого места в приложении, имеющего доступ к контейнеру свойства.
Сравнение свойств и переменных содержится в разделе Различия между свойствами и переменными в Visual Basic.
Синтаксис объявления
Само свойство определяется с помощью блока кода, заключенного между операторами Оператор Property и End Property. Внутри этого блока каждая процедура свойства отображается в виде внутреннего блока, заключенного в операторе объявления (Get или Set) и соответствующем объявлении End.
Для объявления свойства и его процедур используется следующий синтаксис:
[Default] [modifiers] Property propertyname[(parameterlist)] As datatype
[accesslevel] Get
' Statements of the Get procedure.
' The following statement returns expression as the property's value.
Return expression
End Get
[accesslevel] Set[(ByVal newvalue As datatype)]
' Statements of the Set procedure.
' The following statement assigns newvalue as the property's value.
lvalue = newvalue
End Set
End Property
modifiers могут указать уровень доступа и сведения о перегрузке, переопределении, совместном использовании и затенении, а также является ли свойство доступным только для чтения или только для записи. access level для процедур Get или Set может быть любого уровня, являющегося более строгим, чем уровень доступа, указанный для самого свойства. Дополнительные сведения см. в разделе Оператор Property.
Тип данных
Тип данных свойства и уровень доступа определяются в операторе Property, а не в процедурах свойства. Свойство может иметь только один тип данных. Например, невозможно определить свойство для хранения значений Decimal, но извлечь значение Double.
Уровень доступа
Тем не менее, можно определить основной уровень доступа для свойства и ограничить уровень доступа в одной из его процедур. Например, можно определить свойство Public и затем определить процедуру Private Set. Процедура Get остается Public. Можно изменить уровень доступа только в одной из процедур свойств и сделать его более строгим, чем основной уровень доступа. Дополнительные сведения см. в разделе Практическое руководство. Объявление свойства со смешанным уровнем доступа (Visual Basic).
Объявление параметра
Каждый параметр объявляется таким же образом, как и для Подпрограммы (Visual Basic), за исключением того, что механизм передачи должен быть ByVal.
Синтаксис для каждого параметра в списке параметров выглядит следующим образом:
[Optional] ByVal [ParamArray] parametername As datatype
Если параметр является необязательным, необходимо указать его значение по умолчанию как часть объявления. Синтаксис для указания значения по умолчанию выглядит следующим образом:
Optional ByVal parametername As datatype = defaultvalue
Значение свойства
В процедуре Get возвращаемое значение передается в вызывающее выражение в качестве значения свойства.
В процедуре Set новое значение свойства передается параметру оператора Set. Если параметр объявляется явным образом, необходимо объявить его с тем же типом данных, что и свойство. Если параметр не объявлен, компилятор использует неявный параметр Value для присвоения нового значения свойству.
Синтаксис вызова
Процедура свойства вызывается неявно путем создания ссылки на свойство. Имя свойства используется так же, как имя переменной, за исключением того, что должны быть заданы значения для всех обязательных аргументов, а список аргументов должен быть заключен в скобки. Если не указано никаких аргументов, скобки можно опустить (необязательно).
При неявном вызове процедуры Set используется следующий синтаксис:
propertyname[(argumentlist)] = expression
При неявном вызове процедуры Get используется следующий синтаксис:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Пример объявления и вызова
Следующее свойство сохраняет полное имя как два составных имени, то есть имя и фамилию. Когда вызывающий код считывает fullName, процедура Get объединяет два составных имени и возвращает полное имя. Когда вызывающий код присваивает новое полное имя, процедура Set пытается разделить его на два составных имени. Если не удается найти пробел, то она сохраняет все полное имя как имя.
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
В следующем примере показаны вызовы процедур свойств из fullName.
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
См. также
Задачи
Практическое руководство. Создание свойства (Visual Basic)
Практическое руководство. Вызов процедуры свойства (Visual Basic)
Практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic
Практическое руководство. Запись значения в свойство (Visual Basic)
Практическое руководство. Получение значения из свойства (Visual Basic)
Основные понятия
Процедуры Function (Visual Basic)
Процедуры операторов (Visual Basic)