Оператор 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
    Необязательное. Может быть одно из следующих:

  • 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

См. также

Задачи

Практическое руководство. Добавление полей и свойств в класс

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

Свойства, используемые по умолчанию

Ссылки

Оператор Get

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

Список параметров