如何:创建属性

更新:2007 年 11 月

属性定义位于 Property 语句和 End Property 语句之间。在此定义中,可以定义 Get 过程、Set 过程,或者同时定义两者。属性的所有代码均位于这些过程内。

Get 过程检索属性的值,Set 过程存储一个值。如果想要属性可读和可写,这两个过程都必须定义。对于只读属性,只需定义 Get,对于只写属性,只需定义 Set。

创建属性

  1. 在任何属性或过程之外,使用一条 Property 语句 语句,后跟一条 End Property 语句。

  2. 如果属性带有参数,则在 Property 关键字后接该过程的名称,然后是置于括号中的参数列表。

  3. 在括号后使用一个 As 子句,以指定属性值的数据类型。即使对于只写属性也必须指定数据类型。

  4. 根据相应的情况,添加 Get 和 Set 过程。请参见以下说明。

创建检索属性值的 Get 过程

  1. 在 Property 和 End Property 语句之间,加入一条 Get 语句 语句,后跟一条 End Get 语句。无需为 Get 过程定义任何参数。

  2. 在 Get 和 End Get 语句之间放置检索属性值的代码语句。除了生成和返回属性的值之外,该代码还可以包括其他计算和数据操作。

  3. 使用 Return 语句可将属性的值返回到调用代码。

对于读写属性和只读属性,必须编写一个 Get 过程。对于只写属性,无需定义 Get 过程。

创建写入属性值的 Set 过程

  1. 在 Property 和 End Property 之间,加入一条 Set 语句 (Visual Basic) 语句,然后加入一条 End Set 语句。

  2. 在 Set 语句中,参数列表置于 Set 关键字后面的括号中。该参数列表至少必须包括一个值参数,该参数的值由调用代码传递。该值参数的默认名称为 Value,但是如果需要,也可以使用其他名称。值参数的数据类型必须与属性本身相同。

  3. 用于将值存储在属性中的代码语句放在 Set 和 End Set 语句之间。除了验证和存储属性值之外,该代码还可以包括其他计算和数据操作。

  4. 使用值参数接受调用代码提供的值。可以直接通过赋值语句存储该值,或者在表达式中使用它计算出要存储的内部值。

对于读写属性和只写属性,必须编写一个 Set 过程。对于只读属性,无需定义 Set 过程。

示例

下面的示例创建一个读/写属性,将一个全名存储为两个组成部分(名和姓)。当调用代码读取 fullName 时,Get 过程将姓名的两个组成部分组合在一起,并返回全名。当调用代码赋予一个新的全名时,Set 过程尝试将其分割为姓名的两个组成部分。如果它没有找到空格,它将整个名称存储为名。

Dim firstName, lastName As String
Property fullName() As String
    Get
      If lastName = "" Then
          Return firstName
      Else
          Return firstName & " " & lastName
      End If

    End Get
    Set(ByVal Value As String)
        Dim space As Integer = Value.IndexOf(" ")
        If space < 0 Then
            firstName = Value
            lastName = ""
        Else
            firstName = Value.Substring(0, space)
            lastName = Value.Substring(space + 1)
        End If
    End Set
End Property

下面的示例演示对 fullName 属性过程的典型调用。第一个调用设置属性值,第二个调用检索该值。

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

请参见

任务

如何:声明具有混合访问级别的属性

如何:调用属性过程

如何:在 Visual Basic 中声明和调用默认属性

如何:在属性中放置值

如何:从属性获取值

概念

Visual Basic 中的过程

Property 过程

过程参数和变量

Visual Basic 中属性和变量的差异