如何:创建属性 (Visual Basic)
将属性定义包含在 Property
语句和 End Property
语句之间。 在此定义中,定义 Get
过程、Set
过程,或这两者。 所有属性的代码都位于这些过程中。
Get
过程检索属性值,Set
过程存储值。 如果希望属性具有读/写访问权限,则必须定义这两个过程。 对于只读属性,只定义 Get
,对于只写属性,只定义 Set
。
创建属性
在任何属性或过程外部,使用 Property 语句,后跟
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
语句之间放置代码语句以在存储属性值。 除了验证和存储属性值之外,此代码还可以包括其他计算和数据操作。使用值参数接受调用代码提供的值。 可直接在赋值语句中存储此值,也可在表达式中使用该值来计算要存储的内部值。
必须为读写属性以及只写属性编写 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)