Изменения свойств по умолчанию для пользователей Visual Basic 6.0
Обновлен: Ноябрь 2007
Для упрощения и улучшения читаемости кода в Visual Basic 2008 обновлена поддержка свойств по умолчанию.
Visual Basic 6.0
В Visual Basic 6.0 свойства по умолчанию поддерживаются в объектах. В элементе управления Label, например, Caption является свойством по умолчанию, поэтому два присваивания в следующем примере эквивалентны:
Dim lbl As Label
lbl = "Important"
lbl.Caption = "Important"
Свойства по умолчанию дают некоторое преимущество, упрощая написание кода на Visual Basic, однако у них есть ряд недостатков:
Они могут сделать код более сложным для чтения. Если элемент управления Label незнаком разработчику, он не сможет в предыдущем примере по первому присваиванию узнать, хранится ли строка "Important" непосредственно в переменной lbl или в свойстве по умолчанию.
Не всегда легко определить, имеет ли данный объект, который предполагается использовать в коде, свойство по умолчанию и какое именно.
Свойства по умолчанию делают оператор Set необходимым в языке Visual Basic. В следующем примере показано, как указать оператору Set, что требуется присвоить ссылку для объекта, а не свойство по умолчанию:
Dim lbl1 As Label, lbl2 As Label lbl1 = "Saving" ' Assign a value to lbl1's Caption property. lbl2 = lbl1 ' Replace lbl2's Caption property with lbl1's. Set lbl2 = lbl1 ' Replace lbl2 with an object reference to lbl1.
Visual Basic 2008
В Visual Basic 2008 свойства по умолчанию не поддерживаются, если они не принимают аргументы. Из-за такого изменения в синтаксисе нет необходимости указывать операторам Let и Set, что именно должно быть присвоено, и они в операторах присваивания не используются. Свойством Text замещается свойство Caption в элементе управления Label, и предыдущий пример можно переписать следующим образом:
Dim L1, L2 As New Label ' Both become type Label
' in the new version of Visual Basic.
L1.Text = "Saving" ' Assign Text property.
L2.Text = L1.Text ' Copy Text property.
L2 = L1 ' Copy object reference.
Let остается зарезервированным словом в Visual Basic 2008, хотя и не имеет синтаксического использования. Это позволяет избежать путаницы с его значениями в предыдущих версиях. В Visual Basic 2008 используется оператор Set для процедур свойств, которые задают значение свойства.
Параметризованные свойства
Свойства по умолчанию, принимающие аргументы, не являются неопределенными, и они не поддерживаются в Visual Basic 2008. Свойства по умолчанию появляются наиболее часто в классах коллекций. Например, в пространстве имен System.Windows.Forms класс Form поддерживает следующую иерархию:
Объект Form
Свойство Controls (возвращает объект Control.ControlCollection для этой формы)
Объект Control.ControlCollection (свойство по умолчанию — Item)
Свойство Item (возвращает объект Control для одного элемента коллекции)
Объект Control
Свойство Controls возвращает объект Control.ControlCollection, а свойство Item возвращает объект Control. В следующем примере показано правильное и неправильное использование свойств по умолчанию в Visual Basic 2008:
Dim F As New Form ' Assume F has been created and initialized.
F.Controls.Item(0).Text = "Stop" ' Valid -- no default properties used.
F.Controls(0).Text = "Stop" ' Valid -- Item is parameterized.
'F(0).Text = "Stop" ' INVALID -- Form does not have a default property.
'F.Controls(0) = "Stop" ' INVALID -- No default property on Control.
Объявление свойств по умолчанию
В Visual Basic 2008 объявите свойство как свойство по умолчанию, указав в начале объявления ключевое слово Default. При перегрузке имени свойства необходимо указать Default в каждом объявлении перегрузки. Свойство по умолчанию не может быть объявлено Shared или Private.
См. также
Основные понятия
Изменения процедуры свойств для пользователей Visual Basic 6.0
Сводка изменений поддержки элементов программирования