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


Практическое руководство. Объявление и вызов свойства по умолчанию в 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.

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

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

См. также