Практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic
Свойство по умолчанию — это свойство класса или структуры, к которому код может получить доступ, не указывая его. При вызове кода именует класс или структуру, но не свойство, а контекст разрешает доступ к свойству, 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"
Пример 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
Если вы планируете использовать предопределенный класс или структуру в коде, необходимо определить, имеет ли он свойство по умолчанию, а если да, то что такое его имя.
Из-за этих недостатков следует не определять свойства по умолчанию. Для удобочитаемости кода следует также всегда ссылаться на все свойства явным образом, даже свойства по умолчанию.
См. также
- Процедуры свойств
- Параметры и аргументы процедуры
- Оператор Property
- По умолчанию
- Различия между свойствами и переменными в Visual Basic
- Практическое руководство. Создание свойства
- Практическое руководство. Объявление свойства со смешанным уровнем доступа
- Практическое руководство. Вызов процедуры свойства
- Практическое руководство. Запись значения в свойство
- Практическое руководство. Получение значения из свойства