Оператор Property
Объявляет имя свойства, а процедуры свойств, используемые для хранения и извлечения значения свойства.
Синтаксис
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
[ <attributelist> ] [ accessmodifier ] Get
[ statements ]
End Get
[ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
[ statements ]
End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
Детали
attributelist
Необязательно. Список атрибутов, применяемых к этому свойству или
Get
Set
процедуре. См . список атрибутов.Default
Необязательно. Указывает, что это свойство является свойством по умолчанию для класса или структуры, в которой она определена. Свойства по умолчанию должны принимать параметры и могут быть заданы и получены без указания имени свойства. Если вы объявляете свойство как
Default
, нельзя использоватьPrivate
для свойства или в любой из его процедур свойств.accessmodifier
Необязательный для инструкции
Property
и по крайней мере один изGet
операторов иSet
инструкций. Может применяться один из перечисленных ниже типов.См. раздел Access levels in Visual Basic.
propertymodifiers
Необязательно. Может применяться один из перечисленных ниже типов.
MustOverride Overrides
NotOverridable Overrides
Shared
Необязательно. См . раздел "Общий доступ".
Shadows
Необязательно. См . тени.
ReadOnly
Необязательно. См. раздел ReadOnly.
WriteOnly
Необязательно. См. раздел WriteOnly.
Iterator
Необязательно. См . итератор.
name
Обязательный. Имя свойства. См. раздел Declared Element Names.
parameterlist
Необязательно. Список имен локальных переменных, представляющих параметры этого свойства и возможные дополнительные параметры
Set
процедуры. См . список параметров.returntype
Обязательный параметр, если
Option Strict
имеет значениеOn
. Тип данных значения, возвращаемого этим свойством.Implements
Необязательно. Указывает, что это свойство реализует одно или несколько свойств, каждое из которых определено в интерфейсе, реализуемом содержащим классом или структурой этого свойства. См . инструкцию "Реализация".
implementslist
Является обязательным, если предоставлен параметр
Implements
. Список реализуемых свойств.implementedproperty [ , implementedproperty ... ]
Каждый элемент
implementedproperty
имеет перечисленные ниже синтаксис и компоненты.interface.definedname
Часть Description interface
Обязательное. Имя интерфейса, реализуемого этим свойством, содержащим класс или структуру. definedname
Обязательный. Имя, по которому свойство определено в interface
.Get
Необязательно. Обязательный, если свойство помечается
ReadOnly
. Запускает процедуруGet
свойства, которая используется для возврата значения свойства. ИнструкцияGet
не используется с автоматически реализованными свойствами.statements
Необязательно. Блок инструкций для выполнения в
Get
рамках илиSet
процедуры.End Get
Завершает процедуру
Get
свойства.Set
Необязательно. Обязательный, если свойство помечается
WriteOnly
. Запускает процедуруSet
свойства, которая используется для хранения значения свойства. ИнструкцияSet
не используется с автоматически реализованными свойствами.End Set
Завершает процедуру
Set
свойства.End Property
Завершает определение этого свойства.
Замечания
В Property
инструкции представлено объявление свойства. Свойство может иметь процедуру Get
(только для чтения), Set
процедуру (только запись) или оба (чтение и запись). Вы можете опустить и Set
процедуру Get
при использовании автоматически реализованного свойства. Дополнительные сведения см. в разделе "Автоматически реализованные свойства".
Можно использовать Property
только на уровне класса. Это означает, что контекст объявления для свойства должен быть классом, структурой, модулем или интерфейсом и не может быть исходным файлом, пространством имен, процедурой или блоком. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.
По умолчанию свойства используют общедоступный доступ. Уровень доступа свойства можно настроить с помощью модификатора доступа в Property
инструкции, и при необходимости можно настроить один из его процедур свойств на более строгий уровень доступа.
Visual Basic передает параметр процедуре Set
во время назначений свойств. Если параметр не указан Set
, интегрированная среда разработки (IDE) использует неявный параметр с именем value
. Этот параметр содержит значение, назначенное свойству. Обычно это значение хранится в частной локальной переменной и возвращается при каждом вызове Get
процедуры.
Правила
Уровни смешанного доступа. Если вы определяете свойство чтения и записи, вы можете при необходимости указать другой уровень доступа для процедуры
Get
илиSet
процедуры, но не оба. Если это сделать, уровень доступа к процедуре должен быть более строгим, чем уровень доступа свойства. Например, если свойство объявленоFriend
, можно объявить процедуруSet
Private
, но неPublic
.Если вы определяете
ReadOnly
свойство илиWriteOnly
свойство, одна процедура свойства (Get
илиSet
соответственно) представляет все свойство. Нельзя объявить другой уровень доступа для такой процедуры, так как для этого свойства задано два уровня доступа.Тип возвращаемого значения. Инструкция
Property
может объявить тип данных возвращаемого значения. Можно указать любой тип данных или имя перечисления, структуры, класса или интерфейса.Если не указано
returntype
, свойство возвращаетсяObject
.Реализация. Если это свойство использует ключевое
Implements
слово, содержащий класс или структуру, должен иметьImplements
инструкцию сразу после нееClass
илиStructure
инструкции. ОператорImplements
должен содержать каждый интерфейс, указанный вimplementslist
. Однако имя, по которому интерфейс определяетProperty
(indefinedname
), не должен совпадать с именем этого свойства (вname
).
Поведение
Возвращается из процедуры свойства.
Get
Set
Когда или процедура возвращается в вызывающий код, выполнение продолжается с инструкцией, следующей за инструкцией, вызвавающей ее.Return
ИнструкцииExit Property
вызывают немедленный выход из процедуры свойства. Любое количествоExit Property
иReturn
операторы могут отображаться в любом месте процедуры, и вы можете смешивать иReturn
смешиватьExit Property
инструкции.Возвращаемое значение. Чтобы вернуть значение из
Get
процедуры, можно назначить значение имени свойства или включить его в инструкциюReturn
. В следующем примере возвращается возвращаемое значение имениquoteForTheDay
свойства, а затем используетсяExit Property
инструкция для возврата.Private quoteValue As String = "No quote assigned yet."
ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End Property
При использовании
Exit Property
без назначения значенияname
процедуреGet
возвращается значение по умолчанию для типа данных свойства.Оператор
Return
одновременно назначаетGet
возвращаемое значение процедуры и завершает процедуру. В следующем примере приведена иллюстрация этого.Private quoteValue As String = "No quote assigned yet."
ReadOnly Property QuoteForTheDay() As String Get Return quoteValue End Get End Property
Пример
В следующем примере объявляется свойство в классе.
Class Class1
' Define a local variable to store the property value.
Private propertyValue As String
' Define the property.
Public Property Prop1() As String
Get
' The Get property procedure is called when the value
' of a property is retrieved.
Return propertyValue
End Get
Set(ByVal value As String)
' The Set property procedure is called when the value
' of a property is modified. The value to be assigned
' is passed in the argument to Set.
propertyValue = value
End Set
End Property
End Class