5.6自定义数据类型3 j! n5 x6 A' B. h# \2 m) R
1. 自定义数据类型的定义
! T* U }% X* o 是指由若干标准数据类型组成的一种复合类型,也称为记录类型。
9 H3 t! O, D, `: t# K0 ?- w (1)定义方式:9 `; ?4 w/ {9 [* {( n
Type 自定义类型名
( A! R3 H* K. Y) `: y 元素名[(下标)] As 类型名$ w9 F( k- K \" O
……
9 w7 v1 N9 c; ?7 c/ ~ 元素名[(下标)] As 类型名
0 @# V, e" L* M8 U9 E5 Z- W% ? End Type( U; n. X" H6 j ]: A7 ~
元素名:表示自定义类型中的一个成员
) ^) q# e. C( h 下标(可选):表示是数组4 ^2 Q: A) X8 x8 E' E( o
类型名:为标准类型
& `. J) |/ n$ s: }1 J$ B; `$ B 例:定义一个学生信息的自定义类型:- }9 w/ f& I3 N/ E: B" h
Type studtype. A+ s7 H: u; s2 a: C
No As Integer ’ 定义学号
$ Y0 O2 [% Z( Y2 ?% V5 s+ I% }) I3 Z Name As String*10 ’ 定义姓名& d3 c7 \) ?$ [1 U; ]# D
Sex As String*2 ’ 定义性别
5 \- W+ x; L |9 r8 y0 s5 K Mark(1 TO 4) As Single ’ 定义4门课程的成绩! K5 ]* ]5 d& C8 h' F+ S, a4 R
Total As Single ’ 定义总分
6 E- y* F( b4 f3 P, Y End Type
7 G# A; {6 E8 t% t5 z$ y (2)注意事项4 _$ W2 [7 K5 z2 L' o
1)自定义类型一般在标准模块(.bas)中定义,默认是Public# k1 [1 k7 K' G9 D. f4 _$ K7 h
2)自定义类型中的元素可以是字符串,但应是定长字符串
5 R s0 I2 E4 P) O$ f6 f8 T 3) 不可把自定义类型名与该类型的变量名混淆
# U- w* g3 Y1 k/ h" R 4) 注意自定义类型变量与数组的差别:它们都由若干元素组成,前者的元素代表不同性质、不同类型的数据,以元素名表示不同的元素;后者存放的是同种性质、同种类型的数据,以下标表示不同元素。
. h* p# B5 F* Y; D: |- Y2 V 2. 自定义型变量的声明和使用
9 W) H% E6 l' F1 t" F 使用形式: Dim 变量名 As 自定义类型名
/ q0 M. f6 ^1 F) W) X 例如: Dim student As studtype, mystud As studtype5 }, }) x. |- Z d' M# `" p2 g
自定义类型中元素的表示方法是:变量名 . 元素名 如:student.name student.mark(4)
8 p/ A" e7 B; n2 r$ X. X2 _; b 为了简单起见,可以用With …… End With 语句进行简化。 例:
* O5 m5 b: m8 I6 N, D8 H. Z9 @ With student( v2 \2 B8 ^$ F7 Y3 P; L6 p
.no=99001
8 C. K4 ?# a' {" l .name=""/ t* t: x2 ~" H6 F$ c4 K
.sex=""
' R) z4 B# q# e7 } .total=0
/ n. |! e3 U2 y. }% n6 Q5 ] for I=1 to 40 ^ l" O% [: n4 L6 S1 A
.mark(I)=int(rnd*101) ’随机产生0 - 100之间的分数% Y4 N% @9 v5 q& J$ p3 e6 ?
.total=.total+.may(I)
$ [( e4 s' a; r/ } next I
3 m: I& z4 Z( V/ `! U End With
+ z1 |. A- U/ O Mystud=student ’ 同种自定义类型变量可以直接赋值
7 c% o; C0 D, v+ z& Y 3.自定义类型数组的使用
8 w# R* `, ~9 G, e+ _ 自定义类型数组就是数组中的每个元素都是自定义类型。; U# }- |( Q4 g' n. r
例如:自定义一个由学生姓名、成绩组成的学生记录类型,用来存放100个学生的记录。 |