一、枚舉的定義 枚舉是一組命名整型常量。枚舉類型是使用 enum 關鍵字聲明的。 C# 枚舉是值類型。換句話說,枚舉包含自己的值,且不能繼承或傳遞繼承。 二、枚舉的聲明 聲明枚舉的一般語法: enum <enum_name> { enumeration list }; 其中, enum_name 指 ...
一、枚舉的定義
枚舉是一組命名整型常量。枚舉類型是使用 enum 關鍵字聲明的。
C# 枚舉是值類型。換句話說,枚舉包含自己的值,且不能繼承或傳遞繼承。
二、枚舉的聲明
聲明枚舉的一般語法:
enum <enum_name> { enumeration list };
其中,
- enum_name 指定枚舉的類型名稱。
- enumeration list 是一個用逗號分隔的標識符列表。
枚舉列表中的每個符號代表一個整數值,一個比它前面的符號大的整數值。預設情況下,第一個枚舉符號的值是 0.例如:
enum Day { Sun, Mon, tue, Wed, thu, Fri, Sat };
在編譯枚舉類型時,會把每個符號轉換成類型的一個常量欄位很一個int32的公共實例欄位,不夠後者不能通過代碼調用。
因為枚舉的符號是一個常量欄位,如果在不同的程式集引用,可能會出現一些版本問題,
每個枚舉都有一個基礎類型, 包含 byte,sbyte,short,ushort,uint,long ,ulong, 和int (最常用,C#預設的類型)
三、枚舉的轉換
枚舉轉換成整數
Day today = Day.Wed; int dayNumber = (int)today;
枚舉轉換成字元串
Day today = Day.Wed; string todayStr = today.ToString();
四、枚舉的方法
枚舉的主要三個方法: 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:獲取所有枚舉的值
五、標誌枚舉(二進位枚舉)
定義枚舉時,添加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
| 並集 & 交集 ^ 差集