枚举的详细定义
枚举的详细定义
private enum meiju
me=1
you=2
she =3
end enum
private who as meiju
who = me
who = you
who = she
这就是枚举,它用一组新名表示一些类型想同的常量,产生一个新类型.
枚举类型提供了方便的方法处理有关的常数和使名称与常数数值相关联。例如,可以为与星期日期相关联的一组整数常数声明一个枚举类型,然后在代码中使用星期的名称而不使用其整数数值。
枚举可以通过在标准模块或公用类模块中的声明部分用 Enum 语句声明一个枚举类型来创建。枚举类型可以用适当的关键字声明为 Private 或 Public,例如:
Private Enum MyEnum
-或-
Public Enum MyEnum
在缺省情况下,在枚举中的第一个常数被初始化为 0,其后的常数则初始化为比其前面的常数大 1 的数值。例如在下面的枚举 Days 中,包含了一个数值为 0 的常数 Sunday,数值为 1 的常数 Monday,数值为 2 的常数 Tuesday 等等。
Public Enum Days
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
End Enum
提示 Visual Basic 提供了内置的枚举 vbDayOfWeek,包括了与星期的七天相对应的常数。如希望查阅预定义的枚举常数,在代码窗口键入 vbDayOfWeek,后跟一个句号,Visual Basic 将自动显示该枚举常数的内容。
可以使用赋值语句显式地给枚举中的常数赋值。可以赋值为任何长整数,包括负数。例如,可能希望常数数值小于 0 以便代表出错条件。
在以下的枚举中,常数 Invalid 被显式地赋值 –1,而常数 Sunday 被赋值 0。因为 Saturday 是枚举中的第一个元素,所以也被赋值 0。Monday 的数值为 1(比Sunday 的数值大 1),Tuesday 的数值为 2 等等。
Public Enum WorkDays
Saturday
Sunday = 0
Monday
Tuesday
Wednesday
Thursday
Friday
Invalid = -1
End Enum
注意 Visual Basic 将枚举中的常数数值看作长整数。如果将一个浮点数值赋给一个枚举中的常数,Visual Basic 会将该数值取整为最接近的长整数。
通过将相关的常数集组织进枚举类型中,就可以在不同的上下文环境中使用同一个常数名称。例如,可以使用在枚举 Days 和 WorkDays 中的同一个代表星期日期的名称。
当引用单个常数时,为了避免模糊引用,应在常数名称前冠以枚举名。下列代码引用 Days 和 WorkDays 枚举中的 Saturday 常数,并在立即窗口中显示它们的不同的数值。
Debug.Print "Days.Saturday = " & Days.Saturday
Debug.Print "WorkDays.Saturday = " & WorkDays.Saturday
当向一个枚举中的常数赋值时,也可以使用另一个枚举中的常数的数值。例如,下述 WorkDays 枚举的声明与前述的声明是等同的。
Public Enum WorkDays
Sunday = 0
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday = Days.Saturday - 6
Invalid = -1
End Enum
声明枚举类型后,就可以声明该枚举类型的变量,然后使用该变量存储枚举常数的数值。下列代码使用 WorkDays 类型的变量存储与 WorkDays 枚举中的常数相关联的整数数值。
Dim MyDay As WorkDays
MyDay = Saturday 'Saturday 的数值为 0。
If MyDay < Monday Then 'Monday 的数值为 1,
'所以 Visual Basic 显示一个消息框。
MsgBox "It's the weekend. Invalid work day!"
End If
注意,当在代码窗口中键入示例中的第二行代码时,Visual Basic 自动在“自动列出成员”列表中显示 WorkDays 枚举的常数。