5.6自定义数据类型
3 n; v! o0 g6 G* p- Z2 A) c 1. 自定义数据类型的定义
3 q" S* n" O' @) W: j7 L 是指由若干标准数据类型组成的一种复合类型,也称为记录类型。
! K7 K4 ]) S1 O9 n: v' I7 \. S (1)定义方式:3 s9 |# g4 z8 T% h7 z& J3 {8 [
Type 自定义类型名
9 H+ R2 q1 f3 B* @6 l# o8 L 元素名[(下标)] As 类型名
+ B, H" @5 K; f) o; t9 R ……' {; d* J1 c2 I& Y: v
元素名[(下标)] As 类型名 A* R+ g: o% m& ]# O2 E- W, K
End Type
9 U$ n: i/ G0 d/ F5 x! w- w 元素名:表示自定义类型中的一个成员
0 ]5 u% J5 r' h/ s9 z 下标(可选):表示是数组$ D- @9 E6 I! E! Q6 i& q
类型名:为标准类型
2 d: z! e7 y( y3 g" J. i 例:定义一个学生信息的自定义类型:
5 R- _' _/ T! r6 y' b Type studtype: F3 M) N p" I O. a' n. V% U! X
No As Integer ’ 定义学号, O# i7 |+ H$ M; v c4 H
Name As String*10 ’ 定义姓名3 s9 l) J" V; \6 J0 m8 m" b% l
Sex As String*2 ’ 定义性别2 {) n, l& C5 H( s' E$ r
Mark(1 TO 4) As Single ’ 定义4门课程的成绩
# e! C6 |& C+ n6 m# T Total As Single ’ 定义总分0 r" F/ Y2 Z0 i: b% C
End Type
, b6 M- k& [" H' S6 {( K4 S (2)注意事项
' A+ a: P& t8 K7 ~# N6 H- j" s 1)自定义类型一般在标准模块(.bas)中定义,默认是Public! {% J# R. U6 o5 p
2)自定义类型中的元素可以是字符串,但应是定长字符串: t# Z a* O \6 U( X9 H- ~
3) 不可把自定义类型名与该类型的变量名混淆& \' e9 n2 n1 S" Q. c
4) 注意自定义类型变量与数组的差别:它们都由若干元素组成,前者的元素代表不同性质、不同类型的数据,以元素名表示不同的元素;后者存放的是同种性质、同种类型的数据,以下标表示不同元素。
" o1 R" \- s9 }- O8 @ 2. 自定义型变量的声明和使用
! L$ V3 x) W3 h5 Y0 B 使用形式: Dim 变量名 As 自定义类型名
# b( v6 B: B- D9 G* J( o 例如: Dim student As studtype, mystud As studtype
2 t8 \4 u, {* P 自定义类型中元素的表示方法是:变量名 . 元素名 如:student.name student.mark(4), g6 b" }. p, H3 P2 W& B
为了简单起见,可以用With …… End With 语句进行简化。 例:; H1 L/ N7 ~- Z4 t
With student
; Q& u6 G& F( `; N, g9 ?7 w' x .no=99001
8 ?) A8 F; T. M .name=""
7 C/ k8 I. t- r) b. { .sex=""
! ~" b6 V* x2 o- Z .total=0
% y! z0 [0 c" v* g8 k0 o z* v) J. y: | for I=1 to 4
# O' j+ O# ?$ H- t. | .mark(I)=int(rnd*101) ’随机产生0 - 100之间的分数
3 |* W! J; ~6 I% c .total=.total+.may(I)
! A' V; T9 g. F5 M+ G6 r next I
: Q7 t5 r" h7 O0 A/ n, ^: l End With- C9 ]4 t" W8 |7 E
Mystud=student ’ 同种自定义类型变量可以直接赋值0 D$ d0 x1 r+ H& X
3.自定义类型数组的使用1 ?+ S! s/ N2 x; q k
自定义类型数组就是数组中的每个元素都是自定义类型。6 L* P [$ R8 F! T7 }( `! ^/ e/ i
例如:自定义一个由学生姓名、成绩组成的学生记录类型,用来存放100个学生的记录。 |