Skip to content

ENUM


声明枚举类型。

语法

vb
Enum [typename [ Explicit ] ]

symbolname [= expression] [, ...]
...

End Enum

参数

typename

Enum 的名称

symbolname

常量的名称

expression

常量表达式

Explicit

要求必须以 typename.symbolname 的形式显式引用符号

说明

Enum(枚举的缩写)声明一组与离散值对应的符号名称列表。如果未指定初始值,第一项将被设为 0。此后每个符号的值比前一个多 1,除非显式给出了 expression

符号可以每行一个,也可以在同一行用逗号分隔。

Enum 是将一组相关 const 常量归为一组的有效方式。符号可以像常量一样访问,例如:a = symbolname。但若名称与其他符号冲突,则必须使用 typename.symbolname 来消歧义。若将枚举声明为 Explicit,则始终要求使用此解析方式。

Extern ... End Extern 块内声明的非 Explicit Enum,其常量会直接添加到父命名空间(与 C 语言行为一致),而非形成独立命名空间,同时不允许使用 typename.symbolname 方式访问,且常量可能与父命名空间的其他符号冲突。

Enum 不能包含任何成员过程或成员数据(仅限符号),但可以通过包含(有名或匿名)的方式嵌入 Type 中。

Enum 实例可以像任何用户自定义实例一样传递给过程(包括用于定义 Overloaded 运算符)。

无论定义了多少符号,Enum 实例的大小始终等于 Integer 的大小。

示例

start GeSHi

vb
Enum MyEnum
    option1 = 1
    option2
    option3
End Enum

Dim MyVar As MyEnum

MyVar = option1

Select Case MyVar
    Case option1
        Print "Option 1"
    Case option2
        Print "Option 2"
    Case option3
        Print "Option 3"
End Select

end GeSHi

在同一枚举中可以引用之前声明的符号名:

start GeSHi

vb
Enum MyEnum
    option1 = 1
    option2
    option3
    __
    MAX_VALUE = __ -1
End Enum

Print "Option #1:", MyEnum.option1
Print "Option #2:", MyEnum.option2
Print "Option #3:", MyEnum.option3
Print "Max Value:", MyEnum.MAX_VALUE

end GeSHi

输出:

Option #1:     1
Option #2:     2
Option #3:     3
Max Value:     3

方言差异

  • -lang qb 方言中,Explicit Enum 不可用,除非使用别名 __Explicit 引用。

与 QB 的区别

  • FreeBASIC 新增

另请参阅

  • Const
  • Operator
  • 变量类型概览、限制及后缀对照表

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系