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


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

Свойство по умолчанию — это свойство класса или структуры, к которому код может получить доступ, не указывая его. При вызове кода именует класс или структуру, но не свойство, а контекст разрешает доступ к свойству, 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"
    

Пример 1

В следующем примере объявляется свойство по умолчанию для класса.

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

Пример 2

В следующем примере показано, как вызвать свойство 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[] это свойство для различных классов коллекции.

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

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

Вы можете несколько уменьшить вероятность ошибок свойств по умолчанию, всегда используя оператор Option Strict, чтобы задать тип компилятора проверка.On

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

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

См. также