基礎知識---枚舉

1、枚舉的定義ui

枚舉是一組命名整型常量。枚舉類型是使用 enum 關鍵字聲明的。spa

C# 枚舉是值類型。換句話說,枚舉包含本身的值,且不能繼承或傳遞繼承。code

 2、枚舉的聲明blog

聲明枚舉的通常語法:繼承

enum <enum_name>
{ 
    enumeration list 
};

其中,字符串

  • 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

| 並集  &  交集  ^  差集

相關文章
相關標籤/搜索