Оператор 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.Может принимать следующие значения:
Дополнительные сведения см. в разделе Уровни доступа в Visual Basic. |
propertymodifiers |
Необязательный параметр.Может принимать следующие значения:
|
Shared |
Необязательный параметр.Дополнительные сведения см. в разделе Shared (Visual Basic). |
Shadows |
Необязательный параметр.Дополнительные сведения см. в разделе Shadows (Visual Basic). |
ReadOnly |
Необязательный параметр.Дополнительные сведения см. в разделе ReadOnly (Visual Basic). |
WriteOnly |
Необязательный параметр.Дополнительные сведения см. в разделе WriteOnly (Visual Basic). |
Iterator |
Необязательный параметр.См. раздел итератор. |
name |
Обязательное.Имя свойства.Дополнительные сведения см. в разделе Имена объявленных типов (Visual Basic). |
parameterlist |
Необязательный параметр.Список имен локальных переменных, представляющих параметры этого свойства и возможные дополнительные параметры процедуры Set.Дополнительные сведения см. в разделе Список параметров (Visual Basic). |
returntype |
Требуется, если OptionStrict имеет значение On.Тип значения, возвращаемого этим свойством. |
Implements |
Необязательный параметр.Указывает, что это свойство реализует одно или несколько свойств, каждое из которых определено в интерфейсе, реализованном классом или структурой, которая содержит это свойство.Дополнительные сведения см. в разделе Оператор Implements. |
implementslist |
Параметр обязателен, если указано ключевое слово Implements.Список реализуемых свойств. implementedproperty [ , implementedproperty ... ] Каждая процедура implementedproperty имеет следующий синтаксис и составляющие: interface.definedname
ЧастьОписание
interface Обязательное.Имя интерфейса, реализуемого классом или структурой, содержащей свойство.
definedname Обязательное.Имя, под которым свойство определено в interface.
|
Get |
Необязательный параметр.Требуется, если свойство помечено как WriteOnly.Начинает процедуру Get свойства, используемую для получения значения свойства. |
statements |
Необязательный параметр.Блок инструкций, выполняющихся в процедуре Get или Set. |
End Get |
Заканчивает процедуру Get свойства. |
Set |
Необязательный параметр.Требуется, если свойство помечено как ReadOnly.Начинает процедуру Set свойства, используемую для хранения значения свойства. |
End Set |
Заканчивает процедуру Set свойства. |
End Property |
Завершает определение данного свойства. |
Заметки
Инструкция Property начинает объявление свойства.Свойство может иметь процедуру Get (разрешено только чтение), процедуру Set (разрешена только запись), или обе (разрешены чтение и запись).Можно опустить процедуры Get и Set при использовании автоматически реализуемого свойства.Дополнительные сведения см. в разделе Автоматически реализуемые свойства (Visual Basic).
Можно использовать Property только на уровне класса.Это означает, что контекст объявления свойства должен быть классом, структурой, модулем или интерфейсом, и не может быть файлом источника, пространством имен, процедурой или блоком.Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию (Visual Basic).
По умолчанию свойства используют общий доступ.Можно изменить уровень доступа свойства, установив модификатор доступа на операторы 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 (в definedname), не обязано совпадать с именем данного свойства (в name).
Поведение
Возвращение из процедуры свойства. Когда процедура Get или Set возвращает результат в вызвавшую ее программу, далее выполняется оператор, следующий за оператором, из которого была вызвана процедура.
Операторы Exit Property и Return вызывают немедленный выход из процедуры свойства.Любое количество операторов Exit Property и Return может использоваться в любом месте процедуры, и их также можно использовать вместе с операторами Exit Property и Return.
Возвращаемое значение. Для возвращения значения из процедуры 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
См. также
Ссылки
Список параметров (Visual Basic)
Основные понятия
Автоматически реализуемые свойства (Visual Basic)