Процедуры свойств (Visual Basic)
Процедура свойства — это ряд инструкций Visual Basic, которые управляют пользовательским свойством в модуле, классе или структуре. Процедуры свойств также называются средствами доступа к свойствам.
Visual Basic предоставляет следующие процедуры свойств:
- Процедура
Get
возвращает значение свойства. Он вызывается при доступе к свойству в выражении. - Процедура
Set
задает свойству значение, включая ссылку на объект. Он вызывается при назначении значения свойству.
Обычно вы определяете процедуры свойств в парах, используя Get
инструкции и Set
инструкции, но можно определить любую процедуру отдельно, если свойство доступно только для чтения (Оператор Get) или только для записи (Оператор Set).
При использовании автоматического реализованного свойства можно опустить Get
и Set
процедуру. Дополнительные сведения см. в разделе "Автоматически реализованные свойства".
Можно определить свойства в классах, структурах и модулях. Свойства по 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 an 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
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
Можно Modifiers
указать уровень доступа и информацию о перегрузке, переопределении, совместном использовании и тени, а также о том, доступно ли свойство только для чтения или записи. Get
На AccessLevel
уровне или Set
процедуре может быть любой уровень, который является более строгим, чем уровень доступа, указанный для самого свойства. Дополнительные сведения см. в инструкции property.
Тип данных
Тип данных свойства и уровень доступа субъекта определяются в Property
инструкции, а не в процедурах свойств. Свойство может иметь только один тип данных. Например, нельзя определить свойство для хранения Decimal
значения, но получения Double
значения.
Уровень доступа
Однако можно определить уровень доступа субъекта для свойства и дополнительно ограничить уровень доступа в одной из процедур свойств. Например, можно определить Public
свойство, а затем определить процедуру Private Set
. Процедура Get
остается Public
. Уровень доступа можно изменить только в одной из процедур свойства, и вы можете сделать его более строгим, чем уровень доступа субъекта. Дополнительные сведения см. в разделе "Практическое руководство. Объявление свойства с смешанными уровнями доступа".
Объявление параметров
Вы объявляете каждый параметр таким же образом, как и для вложенных процедур, за исключением того, что механизм передачи должен быть 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
- Практическое руководство. Запись значения в свойство
- Практическое руководство. Получение значения из свойства