1、枚举的定义ui
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。spa
C# 枚举是值类型。换句话说,枚举包含本身的值,且不能继承或传递继承。code
2、枚举的声明blog
声明枚举的通常语法:继承
enum <enum_name> { enumeration list };
其中,字符串
枚举列表中的每一个符号表明一个整数值,一个比它前面的符号大的整数值。默认状况下,第一个枚举符号的值是 0.例如:string
enum Day { Sun, Mon, tue, Wed, thu, Fri, Sat };
在编译枚举类型时,会把每一个符号转换成类型的一个常量字段很一个int32的公共实例字段,不够后者不能经过代码调用。io
由于枚举的符号是一个常量字段,若是在不一样的程序集引用,可能会出现一些版本问题,编译
每一个枚举都有一个基础类型, 包含 byte,sbyte,short,ushort,uint,long ,ulong, 和int (最经常使用,C#默认的类型) class
3、枚举的转换
枚举转换成整数
Day today = Day.Wed; int dayNumber = (int)today;
枚举转换成字符串
Day today = Day.Wed; string todayStr = today.ToString();
4、枚举的方法
枚举的主要三个方法: Enum.GetName() 、Enum.GetNames()、Enum.GetValues()
Day today = Day.Wed; string name = Enum.GetName(typeof(Day), 3); Enum.GetNames(typeof(Day)) Enum.GetValues(typeof(Day))
GetName:获取单个枚举的名称
GetNames:获取全部枚举的名称
GetValues:获取全部枚举的值
5、标志枚举(二进制枚举)
定义枚举时,添加Flags特性,以后即可以对这些值执行AND、OR、NOT、XOR按位运算
public enum MyEnum { MyEnum1 = 1, //0x1 MyEnum2 = 1 << 1, //0x2 MyEnum3 = 1 << 2, //0x4 MyEnum4 = 1 << 3, //0x8 MyEnum5 = 1 << 4, //0x10 MyEnum6 = 1 << 5, //0x20 MyEnum7 = 1 << 6 //0x40 }
此时可使用位移运算方便的获取多个枚举的组合变量:
MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2;
myEnum |= myEnum | MyEnum.MyEnum3;
或在组合中删除其中一项枚举:
myEnum ^= MyEnum.MyEnum1;
myEnum &= ~MyEnum.MyEnum2;
须要判断是否包含某一枚举值时,可使用如下方法判断:
(curMyEnum & MyEnum.Enum1) > 0
| 并集 & 交集 ^ 差集