(1)類型聲明語法: enum 枚舉名html
(2)枚舉體語法: a.成員名稱 = 整數值,其餘成員名稱,或者其餘成員與整數的表達式 b.成員之間須要用逗號隔開ui
(3)枚舉能夠繼承的類型:byte、sbyte、short、ushort、int、uint、long 或 ulongspa
(4)枚舉多個成員能夠共享一個值.net
(5)枚舉的默認值規則:第一成員沒有顯示設定值,那麼其默認值是0,後面的項依次加1;若是後面的某個成員設定了值,那麼這個值後面的成員是他的值後面依次加13d
(6)得到枚舉成員的字符串值:方法1:枚舉.成員.ToString() 方法2:Enum.GetName() 方法:Enum.GetValues code
(7)得到枚舉成員的整數值:強制轉化枚舉成員,即:(int)枚舉.成員htm
(8)枚舉通常有兩種用法,一是表示惟一的元素序列,例如一週裏的各天;還有就是用來表示多種複合的狀態。這個時候通常須要爲枚舉加上[Flags]特性標記爲位域.blog
(9)組合多個枚舉狀態的方法:或運算,枚舉成員 | 枚舉成員;從組合狀態中去掉一個元素的方法,用"^"運算符能夠作到,枚舉變量 ^ 枚舉變量的一個成員繼承
2.枚舉類型的優勢:Enums是在棧中而不是堆中創建起來的數值類型,這樣運行的程序須要更少的處理器和內存的資源,你無需使用new來創建一個Enum類型。內存
3.Demo:
1: class Program
2: {
3: public enum Test : int //正確
4: {
5: ok=10000,
6: no=20000
7: }
8: //public enum Test3 : string//錯誤,枚舉可以繼承的類型:byte、sbyte、short、ushort、int、uint、long 或 ulong
9: //{
10: // ok=10000,
11: // no=20000
12: //}
13: //public enum Test2 : byte//錯誤,超出byte的範圍
14: //{
15: // ok=10000,
16: // no=20000
17: //}
18: //public enum Test5 : Test//錯誤,不容許整數之外類型繼承
19: //{
20: // ok=10000,
21: // no=20000
22: //}
23: [Flags]
24: public enum Test4
25: {
26: ok,//無值的話,第一個成員默認是0
27: no,//值默認爲1
28: yes=100,
29: yesyes,//值爲101
30: nono=yesyes+100,
31: okok=yes+yes,
32: ook = ok//多個成員能夠共享一個值
33: }
34: static void Main(string[] args)
35: {
36: Console.WriteLine((int)Test4.ok);//得到枚舉名稱的整數值只需強制轉換便可
37: string str = Test4.ok.ToString();//得到枚舉的名稱字符串,使用ToString()
38: Console.WriteLine(str);
39: Console.WriteLine(Enum.GetName(typeof(Test4),0));
40: Console.WriteLine("*****Enum類方法***************************");
41: foreach (var item in Enum.GetValues(typeof(Test4)))
42: {
43: Console.WriteLine(item);
44: Console.WriteLine((int)item);
45: }
46: Console.WriteLine("*****Flags特性*********************************************");
47: Test4 tt = Test4.no | Test4.yes;//組合2個成員
48: Console.WriteLine(tt);//若是有Flags屬性,值爲:no,yes,沒有Flag屬性,值爲:yesyes
49: Console.WriteLine((int)tt);//值爲兩者之和 101=100+1
50: tt = tt ^ Test4.yes;//去掉組合中的一個成員
51: Console.WriteLine(tt);
52: Console.WriteLine((int)tt);//值爲1
53: Console.ReadKey();
54: }
55: }
圖一:有Flags屬性 圖二:無Flags屬性
4.參考資料:
http://www.west263.com/www/info/21458-1.htm
http://www.cnblogs.com/BillySir/archive/2012/02/15/2353395.html
http://www.189works.com/article-48463-1.html
http://gaoling386.blog.163.com/blog/static/54046024201261793458830/