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

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

  • Default

    Необязательно. Указывает, что это свойство является свойством по умолчанию для класса или структуры, в которой она определена. Свойства по умолчанию должны принимать параметры и могут быть заданы и получены без указания имени свойства. Если вы объявляете свойство как Default, нельзя использовать Private для свойства или в любой из его процедур свойств.

  • accessmodifier

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

    См. раздел Access levels in Visual Basic.

  • propertymodifiers

    Необязательно. Может применяться один из перечисленных ниже типов.

  • 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, можно объявить процедуру SetPrivate, но не Public.

    Если вы определяете ReadOnly свойство или WriteOnly свойство, одна процедура свойства (Get или Setсоответственно) представляет все свойство. Нельзя объявить другой уровень доступа для такой процедуры, так как для этого свойства задано два уровня доступа.

  • Тип возвращаемого значения. Инструкция Property может объявить тип данных возвращаемого значения. Можно указать любой тип данных или имя перечисления, структуры, класса или интерфейса.

    Если не указано returntype, свойство возвращается Object.

  • Реализация. Если это свойство использует Implements ключевое слово, содержащий класс или структуру, должен иметь инструкцию сразу после нее ImplementsClass или Structure инструкции. Оператор Implements должен содержать каждый интерфейс, указанный в implementslist. Однако имя, по которому интерфейс определяет Property (in definedname), не должен совпадать с именем этого свойства (в name).

Поведение

  • Возвращается из процедуры свойства. GetSet Когда или процедура возвращается в вызывающий код, выполнение продолжается с инструкцией, следующей за инструкцией, вызвавающей ее.

    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

См. также