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
在“文件”菜单上,选择“全部保存”以保存所做的工作。
向类中添加属性可以采用以下两种方式之一:“字段”或“属性过程”。还可以用属性的 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.net中用户自定义控件中属性、方法、事件的理解
- VB中WinSock控件的属性、方法、事件及应用
- VB 中MSHFlexgrid 常用的属性,方法事件
- VB中WinSock控件的属性、方法、事件及应用
- 如何给vb的UserControl添加属性、方法和事件?
- VB中WinSock控件的属性、方法、事件及应用
- VB中WinSock控件的属性、方法、事件及应用
- VB中WinSock控件的属性、方法、事件及应用
- 这么详细的分类 VB/VB.NET源代码网站你见过没有? VB/VB.NET中的每一个方法,每一个操作,每一个函数,每一个类.每一个属性,每一个事件都有相应的范例代码
- HTML5 Audio/Video 标签,属性,方法,事件汇总
- vb.net 类中属性中的事件 并向新加窗体中用代码添加控件
- HTML5 Audio/Video 标签,属性,方法,事件汇总 (转)
- HTML5的Video标签的属性,方法和事件汇总及Video填充满父div的大小
- HTML5的Video标签的属性,方法和事件汇总
- c# BackgroundWorker组件介绍(属性、方法、事件)
- JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
- 用VB模拟键盘事件的N种方法
- EAS-BOS常用控件属性方法事件
- ADO三大对象的属性、方法、事件及常数(一)
- html select的事件 方法 属性