Практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic
свойство по умолчанию является свойством класса или структуры, к которому кода может получать доступ без его указания.Если вызывающий код задает имя класса или структуры (но не свойства), а контекст разрешает доступ к свойству, Visual Basic разрешает доступ к свойству по умолчанию этого класса или структуры, если оно существует.
Класс или структура может иметь не более одного свойства по умолчанию.Однако, можно перегружать свойство по умолчанию и иметь более одной его версии.
Дополнительные сведения см. в разделе Default (Visual Basic).
Для объявления свойства по умолчанию
объявите свойство обычным способом.Не указывайте зарезервированные слова Shared и Private.
Вставьте ключевое слово Default в объявление.
Укажите хотя бы один параметр свойства.Нельзя определить свойство по умолчанию, которое не принимает, по крайней мере, один аргумент.
Default Property myProperty(ByVal index As Integer) As String
Для вызова свойства по умолчанию
Объявите переменную типа содержащего класса или структуры.
Dim x As New class1(3)
Используйте имя переменной отдельно в выражении, которое обычно содержит имя свойства.
MsgBox(x)
Укажите после имени переменной список аргументов в круглых скобках.Свойство по умолчанию должно принимать хотя бы один аргумент.
MsgBox(x(1))
Чтобы извлечь значение свойства по умолчанию используйте имя переменной со списком аргументов в выражении или после знака равенства (=) в инструкции присваивания.
MsgBox(x(1) & x(2) & x(3))
Чтобы задать значение свойства по умолчанию, используйте имя переменной со списком аргументов слева от оператора присваивания.
x(1) = "Hello" x(2) = " " x(3) = "World"
Можно указать имя свойства по умолчанию вместе с именем переменной точно так же, как обычно при получении доступа к любому другому свойству.
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
В следующем примере показано, как вызвать свойство по умолчанию 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 StrictOn.
Если планируется использовать предварительно определенный класс или структуру в коде, необходимо определить, имеет ли он свойство по умолчанию, и если да, то какое у него имя.
Из-за этих недостатков не следует определять свойства по умолчанию.Также следует учитывать удобочитаемость кода, которая повышается при постоянной ссылке на все свойства явным образом, даже на свойства по умолчанию.
См. также
Задачи
Практическое руководство. Создание свойства (Visual Basic)
Практическое руководство. Объявление свойства со смешанным уровнем доступа (Visual Basic)
Практическое руководство. Вызов процедуры свойства (Visual Basic)
Практическое руководство. Запись значения в свойство (Visual Basic)
Практическое руководство. Получение значения из свойства (Visual Basic)
Ссылки
Основные понятия
Процедуры свойств (Visual Basic)