c# 之Enum--枚舉

枚舉 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在線狀態的枚舉,
View Code

 

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);
View Code


示例演示如何使用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"
View Code

 示例演示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            }
View Code

 

相關文章
相關標籤/搜索