您的位置:首页 > 编程语言 > VB

VB属性、方法、事件

2006-08-03 18:42 393 查看
1、 向类添加属性

向类中添加属性可以采用以下两种方式之一:“字段”或“属性过程”。还可以用属性的 Public、ReadOnly 或 WriteOnly 修饰符确定属性如何工作。

字段和属性过程

字段其实只是类中的公共变量,可以从该类的外部设置或读取这些变量。它们对于无需验证的属性很有用,例如 Boolean(True 或 False)值。在 Persons 类中,可能有一个名为 Alive 的 Boolean 属性,它指定一个人是死了还是活着。由于只可能有两个值,所以字段最适合此属性。

向类中添加字段的代码如下所示。

Public Alive As Boolean

然而,大多数属性要比这复杂,因此多数情况下需要使用属性过程向类中添加属性。属性过程有三个部分:存储属性值的私有变量的声明;公开该值的 Get 过程以及 Set 过程,顾名思义,即设置该值的过程。

例如,Persons 类的 Name 属性的属性过程如下所示。

Private nameValue As String
Public Property Name() As String
    Get
        Name = nameValue
    End Get
    Set(ByVal value As String)
        nameValue = value
    End Set
End Property

第一行代码声明一个私有 String 变量 nameValue 来存储属性的值。属性过程本身以 Public Property 开始,以 End Property 结束。

Get 过程包含您要读取属性值时将被执行的代码。例如,如果读取 Persons.Name 属性,该代码将会返回存储在 nameValue 变量中的值。

Set 过程包含用于为 nameValue 变量赋新值的代码,它将传递给该变量的值用作 value 参数。例如,如果编写代码 Persons.Name = "John",则 String 值 John 将作为 value 参数传递;然后 Set 过程中的代码将其赋值给 NameValue 变量以存储。

您可能会问为什么舍近求远而不用字段表示 Name 属性。现实世界中的姓名有特定的规则。例如,姓名中通常不含数字。您可以在 Set 过程中添加代码以检查 value 参数,如其中含有数字则返回错误。

只读和只写属性

有时一个属性只能设置一次,以后在程序中执行时永远不能更改。例如,表示雇员编号的属性永远不能更改,所以它可以由另一个程序读取,但您不能允许该程序更改它的值。

ReadOnly 关键字用于指定只能读取但不能修改的属性值。如果尝试为 ReadOnly 属性赋值,代码编辑器中将会出现错误。

要创建只读属性,需使用 Get 过程而不是 Set 过程来创建属性过程,如下所示。

Private IDValue As Integer
ReadOnly Property ID() As Integer
    Get
        ID = IDValue
    End Get
End Property

同样,WriteOnly 关键字允许设置属性值但不允许读取属性值,例如,不允许其他程序读取密码属性。您可以在类中使用该值,但需要使其保持为私有。

要创建只写属性,需使用 Set 过程而不是 Get 过程来创建属性,如下所示。

Private passwordValue As String
WriteOnly Property Password() As String
    Set(ByVal value As String)
        passwordValue = value
    End Set
End Property

当您想要获取一个属性值并将其转换为另一个不同的值时,ReadOnly 和 WriteOnly 属性过程也很有用。例如,以一个人的年龄为例。与姓名不同,年龄会随着时间的变化而变化——如果您将年龄分配给某个类,并在一年后读取回,此时的年龄就是错误的。

在 Persons 类中,可以添加两个属性来避免此类错误 — WriteOnlyBirthYear 属性和 ReadOnlyAge 属性,前者表示出生年份,它永远不变,后者通过计算当前年份与出生年份之间的差值返回值。

向类中添加 ReadOnly 和 WriteOnly 属性
在类模块开头的其他声明之下添加如下声明代码。

Private birthYearValue As Integer

在声明代码下面添加以下属性过程。

WriteOnly Property BirthYear() As Integer
    Set(ByVal value As Integer)
        birthYearValue = value
    End Set
End Property

ReadOnly Property Age() As String
    Get
        Age = My.Computer.Clock.LocalTime.Year - birthYearValue
    End Get
End Property

在“文件”菜单上,选择“全部保存”以保存所做的工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vb integer string 存储 工作