定义
枚举类型是一种值类型,定义好的值会存放到栈中。
枚举类型在定义时使用 enum
关键字表示,枚举类型的定义与类成员的定义是一样的,或者直接定义在命名空间中。
注意
不能直接将枚举类型定义到方法中!!!
基础语法
定义枚举类型的变量的语法形式如下。
访问修饰符 enum 变量名 : 数据类型 { 值l, 值2, }
- 访问修饰符:与类成员的访问修饰符一样,省略访问修饰符也是代表使用
private
修饰符的。 - 数据类型:指枚举中值的数据类型。只能是整数类型,包括
byte
、short
、int
、long
等。 - 值1、值2、……:在枚举类型中显示的值。但实际上每个值都被自动赋予了一个整数类型值,并且值是递增
加1
的,默认是从0
开始的,也就是值1
的值是0
、值2
的值是1
。
实践用法
如果不需要系统自动为枚举值指定值,也可以直接为其赋一个整数值。
每个没有指定值的枚举值,它的初始值都是上一个枚举类型的值加1。
通常设置的枚举值都是不同的,其整数值也是不同的。
示例展示
基本示例:
class EnumTest { public enum Title : int { 助教, 讲师, 副教授, 教授 } } class Program { static void Main(string[] args) { Console.WriteLine(EnumTest.Title.助教 + ":" + (int)EnumTest.Title.助教); Console.WriteLine(EnumTest.Title.讲师 + ":" + (int)EnumTest.Title.讲师); Console.WriteLine(EnumTest.Title.副教授 + ":" + (int)EnumTest.Title.副教授); Console.WriteLine(EnumTest.Title.教授 + ":" + (int)EnumTest.Title.教授); } }
输出
助教:0 讲师:1 副教授:2 教授:3
接下来尝试一下设置初始值:
class EnumTest { public enum Title : int { 助教=1, 讲师, 副教授=4, 教授 } }
输出
助教:1 讲师:2 副教授:4 教授:5
C#
的枚举值是可以设置成相同的初始值的,这点要注意!我们测试一下:
class EnumTest { public enum Title : int { 助教=1, 讲师, 副教授=2, 教授 } }
输出
助教:1 讲师:2 讲师:2 教授:3
实用技巧
在写 TypeScript
的时候,枚举类型中的字段不会限制为整数类型,可以是字符串、bool等类型,如果想要枚举值中是字符串类型的,我们可以用如下的写法做:
public enum MqttTopicType { msg_sys_up, msg_sys_down, msg_vcom_up, msg_vcom_down } var topicType = MqttTopicType.msg_sys_up.ToString();
这样得到的 topicType
变量就是形如 "msg_sys_up"
这样的字符串了。