枚舉 (enum) 是值類型的一種特殊形式,它從 System.Enum 繼承而來,并為基礎的基元類型的值提供替代名稱。枚舉類型有名稱、基礎類型和一組字段。基礎類型必須是一個内置的有符号(或無符号)整數類型(如 Byte、Int32 或 UInt64)。字段是靜态文本字段,其中的每一個字段都表示常數。同一個值可以配置設定給多個字段,出現這種情況時,必須将其中某個值标記為主要枚舉值,以便進行反射和字元串轉換。
enum 關鍵字用于聲明枚舉,即一種由一組稱為枚舉數清單的命名常量組成的獨特類型。每種枚舉類型都有基礎類型,該類型可以是除 char 以外的任何整型。枚舉元素的預設基礎類型為 int。通常枚舉用來定義單選的一些場景,比如:
public enum Sex
{
/// <summary>
/// 男
/// </summary>
Male,
/// 女
Female
}
枚舉和整型可以互相的轉換,比如以下代碼:
Sex sex = Sex.Female;
System.Console.WriteLine((int)sex);
System.Console.WriteLine((Sex)1);
System.Console.WriteLine((Sex)0);
預設情況下,第一個枚舉數的值為 0,後面每個枚舉數的值依次遞增 1。代碼的運作結果如圖3.1.30:
圖3.1.30
我們也可以指定枚舉的數值表達形式:
Male=5,
Female=9
在這樣的情況下,上面的代碼的結果就有點耐人尋味了。結果如圖3.1.31:
<a href="http://blog.51cto.com/attachment/201203/224507206.jpg" target="_blank"></a>
圖3.1.31
我們給予了枚舉中不存在的值,轉換竟然沒有報錯,是以在處理枚舉和整型轉換的時候程式員需要自己判斷轉換的結果是否正确。
更有意思的是枚舉中元素的值可以定義為負數。
Male = 1,
Female =-1
不過在使用整型轉換的時候就有一定的要求:若要強制轉換某個負值,必須将該值放在括号内。
System.Console.WriteLine((Sex)(-1));
本文轉自shyleoking 51CTO部落格,原文連結:http://blog.51cto.com/shyleoking/805151