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


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

Вы заключаете определение свойства между оператором Property и оператором End Property. В этом определении вы определяете процедуру Get, процедуру Set или обе. Весь код свойства лежит в этих процедурах.

Процедура Get извлекает значение свойства, а Set процедура сохраняет значение. Если свойство должно иметь доступ на чтение и запись, необходимо определить обе процедуры. Для свойства только для чтения определяется только Get, а для свойства только для записи — только Set.

Создание свойства

  1. За пределами любого свойства или процедуры используйте выражение Property, за которым следует End Property инструкция.

  2. Если свойство принимает параметры, после ключевого слова Property укажите имя процедуры, а затем список параметров в скобках.

  3. Включите в скобки выражение As, чтобы определить тип данных для значения свойства. Необходимо указать тип данных даже для свойства только для записи.

  4. Добавьте Get и Set процедуры по мере необходимости. См. следующие инструкции.

Чтобы создать процедуру Get, извлекающую значение свойства

  1. Между операторами Property и End Property напишите инструкцию Get, затем разместите оператор End Get. Вам не нужно определять параметры для Get процедуры.

  2. Поместите инструкции кода для получения значения свойства между инструкциями Get и End Get. Этот код может включать другие вычисления и манипуляции с данными в дополнение к созданию и возврату значения свойства.

  3. Используйте инструкцию Return , чтобы вернуть значение свойства в вызывающий код.

Необходимо написать процедуру Get для свойства чтения и записи, а также для свойства только для чтения. Не следует определять процедуру Get для свойства только для записи.

Создание процедуры Set, которая записывает значение свойства

  1. Между операторами Property и End Property напишите оператор Set, за которым следует оператор End Set.

  2. В инструкции Set опционально следуйте за ключевым словом Set, добавив список параметров в скобках. Если список параметров отсутствует или пуст, то определяется неявный параметр Value , тип которого является типом самого свойства. Если список параметров не пуст, можно использовать другое имя, но параметр должен иметь тот же тип данных, что и само свойство.

  3. Поместите инструкции кода для хранения значения в свойстве между Set и End Set. Этот код может включать другие вычисления и манипуляции с данными в дополнение к проверке и хранению значения свойства.

  4. Используйте параметр значения, чтобы принять значение, предоставленное вызывающим кодом. Вы можете сохранить это значение непосредственно в инструкции назначения или использовать его в выражении для вычисления внутреннего значения, которое будет храниться.

Необходимо написать процедуру Set для свойства для чтения и записи и для свойства, доступного только для записи. Нельзя определять процедуру Set для свойства, которое предназначено только для чтения.

Пример

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

См. также