1. 程式人生 > >c# 之Enum--枚舉

c# 之Enum--枚舉

namespace html images 基礎類型 tostring 作用 constant pla 枚舉類

枚舉

收藏的博文連接

  枚舉類型聲明為一組相關的符號常數定義了一個類型名稱。枚舉用於“多項選擇”場合,就是程序運行時從編譯時已經設定的固定數目的“選擇”中做出決定。

  枚舉類型(也稱為枚舉):該類型可以是除 char以外的任何整型(重點)枚舉元素的默認基礎類型為 int.準許使用的枚舉類型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。其作用就是規範代碼通常情況下,最好是在命名空間內直接定義枚舉,以便該命名空間中的所有類都能夠同樣方便地訪問它。

事例演示:enum語法

技術分享
 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之間的相互轉換

技術分享
 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 方法

技術分享

技術分享
 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方法

技術分享

技術分享
 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

技術分享

c# 之Enum--枚舉