如何:创建属性 (Visual Basic)

将属性定义包含在 Property 语句和 End Property 语句之间。 在此定义中,定义 Get 过程、Set 过程,或这两者。 所有属性的代码都位于这些过程中。

Get 过程检索属性值,Set 过程存储值。 如果希望属性具有读/写访问权限,则必须定义这两个过程。 对于只读属性,只定义 Get,对于只写属性,只定义 Set

创建属性

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

  2. 如果属性使用参数,则在 Property 关键字后面输入过程的名称,然后将参数列表用括号括起来。

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

  4. 根据需要添加 GetSet 过程。 请参阅以下说明。

创建检索属性值的 Get 过程

  1. PropertyEnd Property 语句之间,编写 Get 语句,后跟一个 End Get 语句。 无需为 Get 过程定义任何参数。

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

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

必须为读写属性以及只读属性编写 Get 过程。 不得为只写属性定义 Get 过程。

创建写入属性值的 Set 过程

  1. PropertyEnd Property 语句之间,编写 Set 语句,后跟一个 End Set 语句。

  2. Set 语句中,可以选择在 Set 关键字后面加上括号括起来的参数列表。 如果参数列表不存在或为空,则定义一个名为 Value 的隐式参数,其类型为属性本身的类型。 如果参数列表不为空,则可以根据需要使用不同的名称,但参数必须与属性本身具有相同的数据类型。

  3. SetEnd 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 的 Property 过程的典型调用。 第一次调用设置属性值,第二次调用检索属性值。

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

另请参阅