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


Практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic

Обновлен: Ноябрь 2007

свойство по умолчанию является свойством класса или структуры, к которому кода может получать доступ без его указания. Если вызывающий код задает имя класса или структуры (но не свойства), а контекст разрешает доступ к свойству, Visual Basic разрешает доступ к свойству по умолчанию этого класса или структуры, если оно существует.

Класс или структура может иметь не более одного свойства по умолчанию. Однако, можно перегружать свойство по умолчанию и иметь более одной его версии.

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

Для объявления свойства по умолчанию

  1. объявите свойство обычным способом. Не указывайте зарезервированные слова Shared и Private.

  2. Вставьте ключевое слово Default в объявление.

  3. Укажите хотя бы один параметр свойства. Нельзя определить свойство по умолчанию, которое не принимает, по крайней мере, один аргумент.

    Default Property myProperty(ByVal index As Integer) As String
    

Для вызова свойства по умолчанию

  1. Объявите переменную типа содержащего класса или структуры.

    Dim x As New class1(3)
    
  2. Используйте имя переменной отдельно в выражении, которое обычно содержит имя свойства.

    MsgBox(x)
    
  3. Укажите после имени переменной список аргументов в круглых скобках. Свойство по умолчанию должно принимать хотя бы один аргумент.

    MsgBox(x(1))
    
  4. Чтобы извлечь значение свойства по умолчанию используйте имя переменной со списком аргументов в выражении или после знака равенства (=) в инструкции присваивания.

    MsgBox(x(1) & x(2) & x(3))
    
  5. Чтобы задать значение свойства по умолчанию, используйте имя переменной со списком аргументов слева от оператора присваивания.

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. Можно указать имя свойства по умолчанию вместе с именем переменной точно так же, как обычно при получении доступа к любому другому свойству.

    x.myProperty(1) = "Hello"
    x.myProperty(2) = " "
    x.myProperty(3) = "World"
    

Пример

Пример объявления свойства по умолчанию в классе:

Public Class class1
    Private myStrings() As String
    Sub New(ByVal size As Integer)
        ReDim myStrings(size)
    End Sub
    Default Property myProperty(ByVal index As Integer) As String
        Get
            ' The Get property procedure is called when the value
            ' of the property is retrieved.
            Return myStrings(index)
        End Get
        Set(ByVal Value As String)
            ' The Set property procedure is called when the value
            ' of the property is modified.
            ' The value to be assigned is passed in the argument 
            ' to Set.
            myStrings(index) = Value
        End Set
    End Property
End Class

Данный пример кода доступен также в качестве фрагмента кода IntelliSense. В окне выбора фрагмента кода он находится в разделе Язык Visual Basic. Дополнительные сведения см. в разделе Практическое руководство. Вставка фрагментов в код (Visual Basic).

В следующем примере показано, как вызвать свойство по умолчанию myProperty для класса class1. Три оператора присваивания сохраняют значения в myProperty, и вызов MsgBox считывает значения.

Sub Test()
    Dim x As New class1(3)
    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    MsgBox(x(1) & x(2) & x(3))
End Sub

Наиболее часто используется свойство по умолчанию Свойство Item (объект Collection) для различных классов коллекций.

Отказоустойчивость

Свойства по умолчанию могут привести к небольшому сокращению размера исходного кода, но могут сделать код более сложным для восприятия. Если вызывающий код не знаком с классом или структурой, то когда он ссылается на имя класса или структуры он не может быть уверен в том, обращается ли эта ссылка к классу или структуре или к свойству по умолчанию. Это может привести к ошибкам компилятора или к логическим ошибкам во время выполнения.

Можно частично уменьшить вероятность ошибок, связанных со свойством по умолчанию, используя тип проверки компилятором Оператор Option StrictOn.

Если планируется использовать предварительно определенный класс или структуру в коде, необходимо определить, имеет ли он свойство по умолчанию, и если да, то какое у него имя.

Из-за этих недостатков не следует определять свойства по умолчанию. Также следует учитывать удобочитаемость кода, которая повышается при постоянной ссылке на все свойства явным образом, даже на свойства по умолчанию.

См. также

Задачи

Практическое руководство. Создание свойства

Практическое руководство. Объявление свойства со смешанным уровнем доступа

Практическое руководство. Вызов процедуры Get свойства

Практическое руководство. Запись значения в свойство

Практическое руководство. Получение значения из свойства

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

Процедуры свойств

Параметры и аргументы процедуры

Изменения свойств по умолчанию для пользователей Visual Basic 6.0

Различия между свойствами и переменными в Visual Basic

Ссылки

Оператор Property

Default (Visual Basic)