Поделиться через


Процедуры свойств

Обновлен: Ноябрь 2007

Процедура свойства — это последовательность операторов 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 могут указать уровень доступа и сведения о перегрузке, переопределении, совместном использовании и затенении, а также является ли свойство доступным только для чтения или только для записи. accesslevel для процедур Get или Set может быть любого уровня, являющегося более строгим, чем уровень доступа, указанный для самого свойства. Дополнительные сведения см. в разделе Оператор Property.

Тип данных

Тип данных свойства и уровень доступа определяются в операторе Property, а не в процедурах свойства. Свойство может иметь только один тип данных. Например, невозможно определить свойство для хранения значений Decimal, но извлечь значение Double.

Уровень доступа

Тем не менее, можно определить основной уровень доступа для свойства и ограничить уровень доступа в одной из его процедур. Например, можно определить свойство Public и затем определить процедуру Private Set. Процедура Get остается Public. Можно изменить уровень доступа только в одной из процедур свойств и сделать его более строгим, чем основной уровень доступа. Дополнительные сведения см. в разделе Практическое руководство. Объявление свойства со смешанным уровнем доступа.

Объявление параметра

Каждый параметр объявляется таким же образом, как и для Процедуры Sub, за исключением того, что механизм передачи должен быть 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)

См. также

Задачи

Практическое руководство. Создание свойства

Практическое руководство. Вызов процедуры Get свойства

Практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic

Практическое руководство. Запись значения в свойство

Практическое руководство. Получение значения из свойства

Основные понятия

Процедуры в Visual Basic

Процедуры Function

Процедуры операторов

Параметры и аргументы процедуры

Различия между свойствами и переменными в Visual Basic