为了便于调用和代码管理,我们在学习的过程中会接触到Enum和Type两种数据类型,使用Enum可以显著的改变应用程序的可读性,而使用Type可以把不同的属性,方法封装到一个对象类中。
用Type类型定义的变量,拥有自己的成员,类似于一个小型的类(只不过没有事件和方法而已),可以用“变量名.成员名”访问成员。
枚举类型就相当于一组常量,即一组用Const定义的量,为了便于组织才使用枚举类型,不过枚举类型的变量也可以用“变量名.常量名”访问。
比如说,我们如何表示星期,或者月份这样的量,我们当然可以用0,1,2,3,4,5,6 ,或者是1-12个月份。
这样我们在写程序的时候就得写 :
month = 3;
但是有了枚举就不一样了。
Public Enum Weekdays
...
March = 3
...
End Enum
我们可以这样写:
month = March
最近敲了一个小例子,关于一个药房管理系统,最后打印清单的时候要求输出购买的药品名,药品单价,药品数量,并计算出花销的合计,最初也很纠结该怎样存储这些东西,后来发现只要定义一个自定义数据类型medicine,然后定义一个medicine类型的数组,购买过程中将信息存入数组,最后将数组内的信息输出并计算,打印到窗口上,就解决问题了
模块中定义自定义类型如:
Public type medicine
Mname as string
Mprice as integer
Mnum as integer
…
End type
定义可变数组:
Public final() as medicine
在每次购买药品后,重新定义final()数组,利用Preserve关键字,保存数组之前的数据,利用”变量名.成员名”将数据存入数组。
最后,利用”变量名.成员名”输出数据。
Enum语句
定义枚举类型。
语法
[Public | Private] Enumname
membername [= constantexpression]
membername [= constantexpression]
. . .
End Enum
Enum 语句包含下面部分:
部分 | 描述 |
Public | 可选的。表示该 Enum 类型在整个工程中都是可见的。Enum 类型的缺省情况是 Public。 |
Private | 可选的。表示该 Enum 类型只在所声明的模块中是可见的。 |
name | 必需的。该 Enum 类型的名称。name 必须是一个合法的 Visual Basic 标识符,在定义该Enum 类型的变量或参数时用该名称来指定类型。 |
membername | 必需的。用于指定该 Enum 类型的组成元素名称的合法 Visual Basic 标识符。 |
constantexpression | 可选的。元素的值(为 Long 类型)。可以是别的 Enum 类型。如果没有指定constantexpression,则所赋给的值或者是 0(如果该元素是第一个 membername),或者比其直接前驱的值大 1。 |
说明
所谓枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为Enum 语句中指定的常数值。所赋给的值可以包括正数和负数,且在运行时不能改变。例如:
Enum SecurityLevel
IllegalEntry =-1
SecurityLevel1 =0
SecurityLevel2 =1
End Enum
Enum 语句只能在模块级别中出现。定义Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定Enum 类型。类模块中的Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的Enum 类型则不写到类型库中。具有相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。
不能在 With 块中使用 Enum 类型作为目标。
Type 语句
在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。
语法
[Private | Public] Typevarname
elementname [([subscripts])] As type
[elementname [([subscripts])]Astype]
. . .
End Type
Type 语句的语法包含下面部分:
部分 | 描述 |
Public | |
Private | 可选的。用于声明只能在包含该声明的模块中使用的用户自定义的类型。 |
varname | 必需的。用户自定义类型的名称;遵循标准的变量命名约定 |
elementname | 必需的。用户自定义类型的元素名称。除了可以使用的关键字,元素名称也应遵循标准变量命名约定。 |
subscripts | |
| [lower To] upper [,[lowerTo]upper]. . . |
| 如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有Option Base 语句则下界为 0。 |
type | 必需的。元素的数据类型;可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length(对定长的字符串)、Object、Variant、其它的用户自定义的类型或对象类型。 |
说明
Type 语句只能在模块级使用。使用 Type 语句声明了一个用户自定义类型后,就可以在该声明范围内的任何位置声明该类型的变量。可以使用Dim、Private、Public、ReDim或Static 来声明用户自定义类型的变量。