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


Оператор 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

См. также

Ссылки

Оператор Get

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

Список параметров (Visual Basic)

Default (Visual Basic)

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

Автоматически реализуемые свойства (Visual Basic)

Другие ресурсы

Объекты и классы Visual Basic