Enum和Type

来源:互联网 发布:indesign cc 2017 mac 编辑:程序博客网 时间:2024/05/17 13:39


       为了便于调用和代码管理,我们在学习的过程中会接触到Enum和Type两种数据类型,使用Enum可以显著的改变应用程序的可读性,而使用Type可以把不同的属性,方法封装到一个对象类中。

MSDN中关于Enum和Type

Enum和Type的区别

举例

Enum

Type

 

EnumType的区别

       用Type类型定义的变量,拥有自己的成员,类似于一个小型的类(只不过没有事件和方法而已),可以用“变量名.成员名”访问成员。

       枚举类型就相当于一组常量,即一组用Const定义的量,为了便于组织才使用枚举类型,不过枚举类型的变量也可以用“变量名.常量名”访问。

返回目录

举例

Enum

       比如说,我们如何表示星期,或者月份这样的量,我们当然可以用0,1,2,3,4,5,6 ,或者是1-12个月份。

       这样我们在写程序的时候就得写 :

       month =   3; 

       但是有了枚举就不一样了。

       Public Enum  Weekdays 

                ... 

                March =   3

                ... 

       End Enum

       我们可以这样写:

       month  =   March

返回目录

Type

       最近敲了一个小例子,关于一个药房管理系统,最后打印清单的时候要求输出购买的药品名,药品单价,药品数量,并计算出花销的合计,最初也很纠结该怎样存储这些东西,后来发现只要定义一个自定义数据类型medicine,然后定义一个medicine类型的数组,购买过程中将信息存入数组,最后将数组内的信息输出并计算,打印到窗口上,就解决问题了

       模块中定义自定义类型如:

       Public  type medicine

              Mname as string

               Mprice as integer

               Mnum as integer

               …

       End type

       定义可变数组:

       Public final() as medicine

       在每次购买药品后,重新定义final()数组,利用Preserve关键字,保存数组之前的数据,利用”变量名.成员名”将数据存入数组。

       最后,利用”变量名.成员名”输出数据。 

返回目录

MSDN中关于EnumType

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

可选的。数组元素的维数。当定义大小可变的数组时,只须圆括号。subscripts参数使用如下语法:

 

[lower To]upper [,[lowerTo]upper]. . .

 

如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有Option Base 语句则下界为 0。

type

必需的。元素的数据类型;可以是ByteBooleanIntegerLongCurrencySingleDoubleDecimal(目前尚不支持)、DateString(对变长的字符串)、String * length(对定长的字符串)、ObjectVariant、其它的用户自定义的类型或对象类型

 

说明

Type 语句只能在模块级使用。使用 Type 语句声明了一个用户自定义类型后,就可以在该声明范围内的任何位置声明该类型的变量。可以使用DimPrivate、Public、ReDimStatic 来声明用户自定义类型的变量。


返回目录