枚舉 html
收藏的博文鏈接app
枚舉類型聲明爲一組相關的符號常數定義了一個類型名稱。枚舉用於「多項選擇」場合,就是程序運行時從編譯時已經設定的固定數目的「選擇」中作出決定。ide
枚舉類型(也稱爲枚舉):該類型能夠是除 char之外的任何整型(重點)。 枚舉元素的默認基礎類型爲 int.准許使用的枚舉類型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。其做用就是規範代碼,一般狀況下,最好是在命名空間內直接定義枚舉,以便該命名空間中的全部類都可以一樣方便地訪問它。ui
事例演示:enum語法spa
1 public enum QQState //枚舉成員默認爲Int32類型,也能夠本身定義.冒號+整數類型除 2 { 3 OnLine = 1, //默認從0,也能夠指定數值 4 OffLine, //數值按遞增1的順序.--2 5 Leave, //3 6 Busy, 7 QMe //5 8 }; 9 10 //定義QQ在線狀態的枚舉,
enum、int、string之間的相互轉換code
1 //定義枚舉變量 2 QQState enumVariable = QQState.OffLine; 3 4 //枚舉轉字符串 5 string enumStringOne = enumVariable.ToString();//效率低,不推薦.==>OffLine 6 string enumStringTwo = Enum.GetName(typeof(QQState), enumVariable);//推薦==>OffLine enumVariable也能夠換成數值 2 7 8 //枚舉轉int 9 int enumValueOne = (int)enumVariable; //==> 2 10 int enumValueTwo = enumVariable.GetHashCode();//HashCode-哈希代碼,枚舉成員轉換成枚舉成員的值. 11 int enumValueThree = Convert.ToInt32(enumVariable);//==> 2 12 13 //字符串轉枚舉 14 QQState enum1 = (QQState)Enum.Parse(typeof(QQState), enumStringOne); //==>OffLine 15 QQState enum2 = (QQState)Enum.Parse(typeof(QQState), "4"); //枚舉成員值加雙引號 ==>Busy 16 17 //字符串轉值 18 int num1 = (int)Enum.Parse(typeof(QQState), enumStringOne); //==>2 19 20 //值轉枚舉 21 QQState enum2 = (QQState)5; //已知數值和枚舉名,求出值所指的枚舉值 ==>Qme 22 QQState enum3 = (QQState)Enum.ToObject(typeof(QQState), 4); //==>Busy 23 24 //值轉字符串 25 string enumStringThree = Enum.GetName(typeof(QQState), enum2);
示例演示如何使用Enum.CompareTo 方法htm
1 /// <summary> 2 /// 記錄各類車的車門個數. 3 /// </summary> 4 public enum VehicleDoors //車門 5 { 6 Motorbike = 0, //摩托車 7 Sportscar = 2, //跑車 8 Sedan = 4, //轎車 9 Hatchback = 5 //廂車 10 }; 11 12 //聲明枚舉類型的變量. 13 VehicleDoors myVeh = VehicleDoors.Sportscar; 14 VehicleDoors yourVeh = VehicleDoors.Motorbike; 15 VehicleDoors otherVeh = VehicleDoors.Sedan; 16 //該示例顯示如下輸出: 17 // Sportscar比Motorbike有更多的門嗎? 18 //是的 19 // 20 //Sportscar比Sedan有更多的門嗎? 21 //不 22 23 Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, yourVeh); 24 //Environment.NewLine和 「\r\n」 回車換行的做用相似 25 Console.WriteLine("{0}{1}", myVeh.CompareTo(yourVeh) > 0 ? "Yes" : "No", Environment.NewLine); 26 Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, otherVeh); 27 Console.WriteLine("{0}", myVeh.CompareTo(otherVeh) > 0 ? "Yes" : "No");//三目運算符返回"Yes" 仍是 "No"
示例演示Enum.Parse、Enum.GetName、Enum.GetName方法blog
1 public enum Colors 2 { 3 Red, //紅色 4 Green, //綠色 5 Blue, //藍色 6 Yellow //黃色 7 }; 8 9 10 public enum Styles 11 { 12 Plaid = 2, //格紋 13 Striped = 4, //條文 14 Tartan = 6, //格子呢絨 15 Corduroy = 8 //燈芯絨 16 }; 17 18 19 string colorName = Enum.GetName(typeof(Colors), 3); //返回string類型,枚舉元素名字 20 Console.WriteLine("顏色枚舉的第四個值爲 {0}", colorName); 21 22 /*初識foreach循環用於列舉出集合中全部的元素 23 * foreach語句中的表達式由關鍵字in隔開的兩個項組成。in右邊的項是集合名 24 * in左邊的項是變量名,用來存放該集合中的每一個元素。 25 * 該循環的運行過程以下:每一次循環時,從集合中取出一個新的元素值。 26 * 放到只讀變量中去,若是括號中的整個表達式返回值爲true,foreach塊中的語句就可以執行。 27 * 一旦集合中的元素都已經被訪問到,整個表達式的值爲false,控制流程就轉入到foreach塊後面的執行語句。 28 */ 29 foreach (var name in Enum.GetNames(typeof(Styles))) 30 { 31 Console.WriteLine("樣式枚舉基數是{0}對應的枚舉名字{1}{2}", 32 (int)Enum.Parse(typeof(Styles),name),name,"\r\n"); 33 //Type type = name.GetType(); 34 //Console.WriteLine("我是什麼類型{0}", type); 35 }