默认属性更改(针对 Visual Basic 6.0 用户)

更新:2007 年 11 月

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 中,还是存储在默认属性中。

  • 对于计划在代码中使用的对象,总是不容易知道它是否有默认属性,如果有,是哪个属性。

  • 在 Visual Basic 语言中,默认属性使 Set 语句成为必要的语句。下面的示例说明如何需要使用 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 属性取代了 Label 控件上的 Caption 属性,因此可以按如下所示重新编写前面的示例。

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 用户)

编程元素支持更改总结

参考

Text

Label

Set 语句 (Visual Basic)

System.Windows.Forms

Form

Control.ControlCollection

Control

Default (Visual Basic)