发布网友 发布时间:2022-04-22 20:01
共1个回答
热心网友 时间:2023-10-27 10:15
四、记录类型(用户自定义类型)
使用VB提供的数据类型基本上已经可以满足用户的要求,但有时会需要存放一组不同类型的数据。例如,一个管理学生的教务系统,一个学生通常要有许多特征,如学生的姓名、年龄、性别等。如果每个特征都用一个变量表示,当有许多学生时很可能产生混乱。这时,就可以把学生的所有特征构造为一个数据类型。
1、记录类型定义
在Visual Basic中构造数据类型可以用Type语句定义,Type的语法如下:
[Private| Public] Type 记录类型名
成员列表
End Type
说明:
记录类型的定义必须放在模块(包括标准模块和窗体模块)的声明部分。
记录数据类型是定义在“Type …End Type”之间的数据。“[ ]”内的是可选项。
Public用于声明可在所有工程的所有模块的任何过程中使用记录类型;
Private用于声明只能在包含该声明的模块中使用记录类型。
当在标准模块中定义时,可以有关键字Public(默认)或Private;而如果在窗体模块中定义,则必须加上关键字Private。
记录类型的命名遵循标准的变量命名约定。
成员的类型声明格式为:
成员名 As 数据类型
注意:
Type …End Type中不允许使用行号和标签。
Type 语句只能在模块的声明部分中使用。
例如:
Type Student
Num As Integer
Name As String *20 '定长字符串(20个)
Sex As String*1 '定长字符串(1个)
Age As Integer
Score As single
Addr As String
End Type
该例定义了一个类型名为:“Student”六个成员的记录集合。
使用 Type 语句声明了一个记录类型后,就可以在该声明范围内的任何位置声明该类型的变量。可以使用 Dim、Private、Public、ReDim 或 Static 来声明记录类型的变量。对同一种用户定义类型,可以声明为局部的、私有的或公用的模块级变量。
下表介绍了在什么地方声明用户定义类型和该类型的变量及其作用范围。
过程/模块
将用户定义类型创建成为…
用户定义类型的变量可以被声明成…
过程
标准模块
窗体模块
类模块
不适用
私有或公用
仅私有
私有或公用
仅局部
私有或公用
仅私有
私有或公用
缺省情况下,用Type语句声明的记录类型是公有的,但任何公有的声明和定义只能放在标准模块的声明部分,因此,在窗体模块或类模块的声明部分定义用户自定义类型时,一定要加上Private关键字。
例如,在一个标准模块中创建一个记录有关公司雇员信息的用户定义类型时,必须使用关键字Private:
Private Type Employee
ID As Integer
Name As String *20
Salary As Cureency
End Type
记录类型中的成员可以是数组。包括:静态数组和动态数组。例如:
Type SystemInfo
CPU As Varint
Memory As Long
DiskDrives(25) As String'静态数组(此处也可以是动态数组,即可以改为DiskDrives() As String)
VideoColore As Integer
Cost As Currency
PurchaseDate As Variant
End Type
2、定义记录类型变量
定义了一个记录类型之后,可以用Dim(或Public,Static)来声明拥有这种数据类型的变量。例 如:
Dim Student1,Student2 As Student
定义Student1和Student2为Student之后,Student1和Student2就具有了Student类型的结构。
Student1
1001
Zhang Zhen
M
18
90
Shanghai
Student2
1002
Wang Chen
M
18
95
Beijing
3、赋值和检索值
对记录类型变量的元素赋值和检索类似于对象属性的设置和获取。例如:
MySystem.CPU="486"
If MySystem.PurchaseDate>#1/1/92# Then…
如果两个变量都属于同一个用户定义类型,也可将其中一个变量赋给另一个变量。这种赋值是将一个变量的所有元素赋给另一个变量的对应元素。例如:
YourSystem=MySystem (两者均为记录类型)
记录中的成员的数据也可以是记录类型,称之为嵌套记录。
4、记录数组
一个记录变量可以是一组数据(如一个学生的学号、姓名、成绩……等数据)。如果对一个班的学生的数据进行统计与处理,显然应该使用记录数组。记录数组与以前的数组不同之处在于每个数组元素都是一个记录类型的数据。下面的示例完成对记录数组的初始化。