Несмотря на то, что свойства класса могут быть реализованы как общедоступные переменные, для доступа к ним Visual Basic предоставляет процедуры Property Let и Property Get. Для корректной реализации свойства класса необходимо добавить следующие процедуры:
Private m_IntProperty
Public Property Let IntProperty(newValue As Integer)
m_IntProperty = newValue
End Property
Public Property Get IntProperty() Аs Integer
IntProperty = m_IntProperty
End Property
Закрытая переменная m_IntProperty - это локальная копия значения свойства. Каждый раз, когда приложение устанавливает значение этого свойства, автоматически вызывается процедура Property Let и новое значение используется в качестве аргумента. Другими словами, строка
IntProperty = 100
вызывает следующую процедуру класса:
Property Let IntProperty(100)
Назначение свойству некоторого значения приводит к вызову процедуры Property Let (имеющую то же имя, что и свойство). Код процедуры может проверить новое значение на допустимость и либо принять его (и присвоить его значение локальной переменной), или отвергнуть. Аналогично, когда приложение запрашивает значение свойства IntProperty, передается значение локальной переменной m_IntProperty.
В процедуру Property Let можно добавить любой необходимый код проверки корректности значения. Например, свойство Age (Возраст) может быть реализовано следующим кодом:
Private m_Age
Public Property Let Age(newValue As Integer)
Select Case newValue
Case < 0: m_Age = 0
Case > 100 : m_Age = 100
Else m Age = newValue
End Select
End Property
Public Property Get Age() As Integer
IntProperty = m_Age
End Property
Если в приложении определено неверное значение возраста, класс выполняет некоторые действия, которые впоследствии предотвращают серьезные ошибки. Объем программного кода проверки зависит от природы свойства, а его можно добавить столько, сколько будет необходимо.
Можно также принудительно вызвать ошибку изнутри процедуры Property Let, которая может быть обработана кодом приложения. Например, можно так реализовать свойство Age: