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
| 並集 & 交集 ^ 差集