(1)為什麼要使用Enum? (4)如果enum中的部分成員顯式定義了值,而部分沒有;那麼沒有定義值的成員還是會按照上一個成員的值來遞增賦值,例如: (5)enum枚舉成員可以用來作為位標誌,同時支持位的操作(位與,位或等等),例如:??? 十六進位數的一個作用就是用來進行位運算和操作,很方便。 ( ...
(1)為什麼要使用Enum?
♥ enums枚舉是值類型,數據直接存儲在棧中,而不是使用引用和真實數據的隔離方式來存儲。
enum student{a,b,c,d,e},其中enum代表student為枚舉類型 enum枚舉屬於值類型 不屬於引用類型。
也就是說,a=0,b=1,c=2,d=3,e=4,
當student.a使用該枚舉時,可用一個int類型的變數來接收此值
也就是int num = student.a ; 相當於 int num = 1;
有些時候,我們需要向資料庫里存放一些代表著標示意義的值,但是存字元串會增加資料庫的負載能力
於是.net便發明瞭這種枚舉類型,用於更好的在編程過程中記憶每一個標示數字所代表的意義
比如:
男和女
我們想存放在資料庫中這兩個值,直接存放“男”,“女”這兩個char或者string值也可以
但是最優的方式便是存放int類型的值 如0代表男,1代表女
那麼我們就創建一個枚舉類
enum gender{boy,girl}
在取值的時候就用gender.boy來代表男 gender.girl代表女
這時存放資料庫中的值就是0和1了
(2)預設情況下,枚舉中的第一個變數被賦值為0,其他的變數的值按定義的順序來遞增(0,12,3...),因此以下兩個代碼定義是等價的:
1 enum TrafficLight 2 { 3 Green, 4 Yellow, 5 Red 6 }
- enum TrafficLight
- {
- Green = 0,
- Yellow = 1,
- Red = 2
- }
(3)enum枚舉類型的變數的名字不能相同,但是值可以相同,例如:
1 num TrafficLight 2 { 3 Green = 0, 4 Yellow = 1, // Duplicate value, OK 5 Red = 1 // Duplicate value, OK 6 }
(4)如果enum中的部分成員顯式定義了值,而部分沒有;那麼沒有定義值的成員還是會按照上一個成員的值來遞增賦值,例如:
1 enum LoopType 2 { 3 None, // value is 0 4 Daily, // value is 1 5 Weekly = 7, 6 Monthly, // value is 8 7 Yeayly, // value is 9 8 DayGap = 15, 9 WeekGap, // value is 16 10 MonthGap, // value is 17 11 YearGap // value is 18 12 }
(5)enum枚舉成員可以用來作為位標誌,同時支持位的操作(位與,位或等等),例如:???
bite1 enum CardDeckSettings : uint 2 { 3 SingleDeck = 0x01, // Bit 0 4 LargePictures = 0x02, // Bit 1 5 FancyNumbers = 0x04, // Bit 2 6 Animation = 0x08 // Bit 3 7 }
十六進位數的一個作用就是用來進行位運算和操作,很方便。
(6)獲得所有符號名的方法
1 public enum MyFamily 2 { 3 YANGZHIPING = 1, 4 GUANGUIQIN = 2, 5 6 YANGHAORAN = 4, 7 LIWEI = 8, 8 9 GUANGUIZHI = 16, 10 LISIWEN = 32, 11 LISIHUA = 64, 12 } 13 14 foreach (string s in Enum.GetNames(typeof(MyFamily)))//註意typeof Hanson.Ada 15 { 16 Console.WriteLine(s); 17 }