如何:创建属性(Visual Basic)

您需要将属性定义放在Property语句和End Property语句之间。 在此定义中,可以定义一个 Get 过程、一个 Set 过程,或者两者都定义。 所有属性的代码都位于这些过程中。

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

创建属性

  1. 在任何属性或过程之外,请使用属性语句,然后使用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. Property 语句和 End Property 语句之间,写一个 Set 语句,然后是 End Set 语句。

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

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

  4. 使用 value 参数接受调用代码提供的值。 可以直接将此值存储在赋值语句中,也可以在表达式中使用它来计算要存储的内部值。

必须为读写属性以及只写属性编写 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)

另请参阅