枚舉這個名詞你們都聽過,不少小夥伴也使用過,html
那麼枚舉在開發中能作什麼,使用它後能給程序代碼帶來什麼改變,爲何用枚舉。sql
各位看官且坐下,聽我一一道來。數據庫
爲何使用枚舉?數組
一、枚舉可以使代碼更加清晰,它容許使用描述性的名稱表示整數值。ui
二、枚舉使代碼更易於維護,有助於確保給變量指定合法的、指望的值。spa
三、枚舉使代碼更易輸入和讀取。code
枚舉有哪些用法?orm
一、簡單枚舉htm
二、標誌枚舉對象
一、簡單枚舉
C#提供類一個類來方便操做枚舉,下面給出這個類的經常使用方法:
C#枚舉經常使用方法方法 | 名稱 |
CompareTo | 將此實例與指定對象進行比較並返回一個對兩者的相對值的指示 |
Equals | 指示此實例是否等於指定的對象 |
Format | 根據指定格式將指定枚舉類型的指定值轉換爲其等效的字符串表示形式 |
GetName | 在指定枚舉中檢索具備指定值的常數的名稱 |
GetNames | 檢索指定枚舉中常數名稱的數組 |
GetNames | 檢索指定枚舉中常數名稱的數組 |
GetTypeCode | 返回此實例的基礎 TypeCode |
GetUnderlyingType | 返回指定枚舉的基礎類型 |
GetValues | 索指定枚舉中常數值的數組 |
HasFlag | 肯定當前實例中是否設置了一個或多個位域 |
IsDefined | 返回指定枚舉中是否存在具備指定值的常數的指示 |
Parse | 將一個或多個枚舉常數的名稱或數字值的字符串表示轉換成等效的枚舉對象。 一個參數指定該操做是否不區分大小寫 |
TryParse | 將一個或多個枚舉常數的名稱或數字值的字符串表示轉換成等效的枚舉對象。 用於指示轉換是否成功的返回值 |
若是要顯示指定枚舉的底層數據類型很簡單,只需在聲明枚舉的時候加個冒號,後面緊跟要指定的數據類型(可指定類型有:byte、sbyte、short、ushort、int、uint、long、ulong)。
顯式設置枚舉的成員常量值,默認是從0開始,逐個遞增的。可是如下例子卻設置成了1,2,3,0。並且成員值能夠同樣的。
以下示例:由枚舉值獲取枚舉名稱與由枚舉名稱獲取枚舉值
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace enumApplication { class Program { static void Main(string[] args) { //輸出方式一: Console.WriteLine("我是四大名著之一的:" + Enum.GetName(typeof(Man), 1)); //西遊記(是哪一個名著由值獲取) //輸出方式二: string[] array1 = Enum.GetNames(typeof(Man)); Console.WriteLine("我是四大名著之一的:" + array1[2]); //紅樓夢(是哪一個名著由值獲取) //輸出方式三: Array array2 = Enum.GetValues(typeof(Man)); Console.WriteLine("我是四大名著之一的:" + array2.GetValue(3)); //三國演義(是哪一個名著由值獲取) //輸出方式四: Type t = Enum.GetUnderlyingType(typeof(Man)); Console.WriteLine("我輸出的是值類型:"+t); //輸出 Int32 //輸出方式五:由值獲取內容 int i = 0; string Name = Enum.Parse(typeof(Man), i.ToString()).ToString(); //此時 Name="水滸傳" Console.WriteLine("我是四大名著之一的:" + Name); //輸出方式六:由值獲取內容 string Name2 = "紅樓夢"; int j = Convert.ToInt32(Enum.Parse(typeof(Man), Name2)); //此時 j=2 Console.WriteLine("我是《紅樓夢》對應的值序號:"+j); Console.ReadKey(); } enum Man:int //四大名著枚舉 { 西遊記 = 1, 紅樓夢 = 2, 三國演義 = 3, 水滸傳 = 0 } } }
二、標誌枚舉
標誌枚舉要在頂部加[System.Flags]特性進行聲明。並且枚舉支持組合運算。
這種位運算是很是有用的,在sql語句裏也支持位運算。也就是說,把一個枚舉運算後的結果存入數據庫以後,還可以按照你的要求讀取出來。好比:
將一個"高帥"存如數據庫的值存入數據庫,那麼存入去的就是整型5。
select * from Table where Column & 1 = 1 //Column 是列名 select * from Table1 where Column | 1 = Column
以下demo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace enumApplication { class Program { static void Main(string[] args) { var man = People.高 | People.帥; //賦值爲101 計算方法001或上100,結果是101 Console.WriteLine("高和帥的枚舉值和爲:"+(int)man); if ((man & People.高) == People.高) //101 man { //001 高 逐位相與, Console.WriteLine("此人:高"); //001 若是結果是高,就能夠反推出man包含 高 } else { Console.WriteLine("此人:矮"); } Console.ReadKey(); } [System.Flags] public enum People:int { 高 = 1, //001 富 = 2, //010 帥 = 4, //100 } } }
三、枚舉使用的一些建議
枚舉用好了仍是蠻方便的,你們不妨去試試。
原文出處:https://www.cnblogs.com/xiongze520/p/10271350.html