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


Свойства и процедуры свойств

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

Для хранения данных в объекте используются и поля, и свойства. Поля являются простыми общими переменными. Свойства используют процедуры свойств для управления процессом назначения и возврата переменных. Процедуры свойств являются блоками кода, объявленными внутри описаний свойств. Они позволяют выполнять код при назначении или извлечении значения свойства.

В Visual Basic существует два типа процедур свойств: процедуры свойств Get для получения значения свойства и процедуры свойств Set для присваивания значения свойству. Например, свойство, хранящее остаток на банковском счете, может использовать процедуру свойств Get для начисления процентов и проверки оплаты услуг перед возвратом доступных средств. Затем можно использовать процедуру свойства Set для проверки баланса и предотвращения его неправильного обновления. Процедуры свойств позволяют объектам защищать и проверять их собственные данные.

В следующем примере выполняется сравнение способов проверки значений полей и свойств.

Protected Sub TestFieldsAndProperties()
    ' Assume, for this example, that the only valid values for
    ' the field and property are numbers less than 10.
    Dim NewClass As New ThisClass

    ' Test data validation. 

    ' Works because there is no data validation.
    NewClass.ThisField = 36
    ' Will print 36.
    MsgBox("ThisField = " & NewClass.ThisField)

    ' The attempt to set the field to a value greater than 10 will silently fail.
    NewClass.ThisProperty = 36
    ' The next statement will print the old value of 0 instead.
    MsgBox("ThisProperty = " & NewClass.ThisProperty)
End Sub

Public Class ThisClass
    ' Declare a field.
    Public ThisField As Integer
    ' Field used for Property Set operations.
    Private thisPropertyValue As Integer = 0
    ' Declare a property.
    Public Property ThisProperty() As Integer
        Get
            Return thisPropertyValue
        End Get
        Set(ByVal Value As Integer)
            ' Only allow Set operation for values less than 10.
            If Value < 10 Then thisPropertyValue = Value
        End Set
    End Property
End Class

Процедура TestFieldsAndProperties создает экземпляр класса, задает и получает значения полей и свойств. Предполагается, что допустимыми значениями являются числа меньше 10. Из-за отсутствия способа проверки задаваемых значений допустимо присваивание полю значения 36. Свойство выполняет присвоение только для чисел меньше 10, поэтому попытка присвоить число 36 пропускается.

Свойства, доступные только для чтения и только для записи

Большинство свойств включают обе процедуры свойств Get и Set для чтения и изменения хранящихся внутри них значений. Для ограничения изменения и чтения свойств следует использовать модификаторы ReadOnly или WriteOnly.

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

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

141y8464.alert_note(ru-ru,VS.90).gifПримечание.

Предыдущие версии Visual Basic поддерживают процедуры свойств Let для присвоения объектов свойствам. Visual Basic избавляет от необходимости использования процедуры Let, поскольку присваивание объектов обрабатывается как любой другой тип присваивания.

См. также

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

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

Процедуры свойств и поля

Ссылки

Оператор Get

Инструкция Set (Visual Basic)

ReadOnly (Visual Basic)

WriteOnly