Оператор Property
Обновлен: Ноябрь 2007
Объявляет имя свойства и его процедуры, используемые для сохранения и извлечения значения свойства.
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
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
Компоненты
attributelist
Необязательный. Список атрибутов, которые применяются к этому свойству или к процедуре Get или Set. См. Список атрибутов.Default
Необязательный. Указывает, что это свойство — свойство по умолчанию для класса или структуры, для которой оно определено. Свойства по умолчанию должны получать параметры и могут быть установлены и извлечены без указания имени свойства. Если свойство объявляется как Default, нельзя использовать Private на свойстве или любой его процедуре.accessmodifier
Необязательное для оператора Property и для максимум одного из операторов Get и Set. Может быть одно из следующих:См. раздел Уровни доступа в Visual Basic.
propertymodifiers
Необязательное. Может быть одно из следующих:MustOverride Overrides
NotOverridable Overrides
Shared
Необязательное. См. раздел Shared (Visual Basic).Shadows
Необязательное. См. раздел Shadows.ReadOnly
Необязательное. См. раздел ReadOnly (Visual Basic).WriteOnly
Необязательное. См. раздел WriteOnly.name
Требуется. Имя свойства. См. раздел Имена объявленных элементов.parameterlist
Необязательное. Список имен локальных переменных, представляющих параметры этого свойства и возможные дополнительные параметры процедуры Set. См. раздел Список параметров.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 (только запись), или обе (чтение и запись).
Можно использовать зарезервированное слово 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 (в 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
См. также
Задачи
Практическое руководство. Добавление полей и свойств в класс
Основные понятия
Свойства, используемые по умолчанию