您需要将属性定义放在Property
语句和End Property
语句之间。 在此定义中,可以定义一个 Get
过程、一个 Set
过程,或者两者都定义。 所有属性的代码都位于这些过程中。
该过程 Get
检索属性值,过程 Set
存储一个值。 如果希望属性具有读/写访问权限,则必须定义这两个过程。 对于只读属性,只能 Get
定义,而对于仅写属性,则仅 Set
定义。
创建属性
在任何属性或过程之外,请使用属性语句,然后使用
End Property
语句。如果该属性需要参数,请先使用
Property
关键字,然后是过程名称,接着在括号中列出参数。在括号后添加
As
子句,以指定属性值的数据类型。 必须指定数据类型,即使是仅写属性也不能例外。根据适当情况添加
Get
和Set
步骤。 请参阅以下指引。
创建一个用于检索属性值的 Get 方法
在
Property
和End Property
语句之间,编写 Get 语句,后跟一个End Get
语句。 无需为该过程定义任何参数Get
。将代码语句放置在
Get
和End Get
语句之间,以检索属性的值。 除了生成和返回属性的值外,此代码还可以包括其他计算和数据处理。Return
使用语句将属性的值返回到调用代码。
必须为读写属性以及只读属性编写 Get
过程。 不得为只写属性定义 Get
过程。
创建一个用于写入属性值的 Set 过程
在
Property
语句和End Property
语句之间,写一个 Set 语句,然后是End Set
语句。在
Set
语句中,关键字Set
后面可以选择性地加上括号中的参数列表。 如果参数列表不存在或为空,则定义一Value
个名为隐式参数,其类型为属性本身的类型。 如果参数列表不为空,则可以根据需要使用不同的名称,但参数必须与属性本身具有相同的数据类型。将代码语句放在
Set
和End Set
语句之间,以在属性中存储一个值。 除了验证和存储属性的值之外,此代码还可以包括其他计算和数据操作。使用 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)