標籤:
枚舉在軟體開發中的用途
1. 枚舉類型(enum type)是具有一組命名常量的獨特的實值型別。
2. 枚舉的定義:
public enum Sex { 男 = 0, 女 = 1 }
或者:如果只給男賦值,那麼女=1
public enum Sex { 男 = 0, 女 }
3. 我們在實際開發中,對於資料庫的設計會經常需要很多狀態欄位(比如性別、審核狀態、分類狀態等等等等),而這些狀態欄位的值又只有固定的幾個,這個時候我們一般會需要資料字典來維護這些資料。而資料字典該以什麼形式存在呢?
以我自己的經驗,我一般以兩種方式來儲存這些狀態資料:
3.1.建一個資料庫資料字典表(key,value,parentKey)來儲存這些資料
優點:可以表示具有上下級關係的資料字典、在生產階段可以隨意修改資料的名稱
缺點:需要從資料庫擷取,效能稍差
3.2.將這些資料以枚舉的形式儲存(我們可以使用枚舉表示資料庫表中的狀態為欄位對應的一組狀態,比如對於person表中的sex欄位的值我們就可以用枚舉表示)
優點:賦值的時候可以以強型別的方式賦值而不是數字,比如:
int a = (int)EnumHelper.Sex.女;
缺點:生產階段不能修改名稱
enum、int、string三種類型之間的互轉
int a = (int)Sex.女; string b = Sex.女.ToString(); Sex s= (Sex)Enum.Parse(typeof(Sex), "女"); Sex t= (Sex)1;
枚舉轉換成字典集合的方法
1.這裡我就直接列舉代碼如下:
public static class EnumHelper { /// <summary> /// 根據枚舉的值擷取枚舉名稱 /// </summary> /// <typeparam name="T">枚舉類型</typeparam> /// <param name="status">枚舉的值</param> /// <returns></returns> public static string GetEnumName<T>(this int status) { return Enum.GetName(typeof(T), status); } /// <summary> /// 擷取枚舉名稱集合 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static string[] GetNamesArr<T>() { return Enum.GetNames(typeof(T)); } /// <summary> /// 將枚舉轉換成字典集合 /// </summary> /// <typeparam name="T">枚舉類型</typeparam> /// <returns></returns> public static Dictionary<string, int> getEnumDic<T>() { Dictionary<string, int> resultList = new Dictionary<string, int>(); Type type = typeof(T); var strList = GetNamesArr<T>().ToList(); foreach (string key in strList) { string val = Enum.Format(type, Enum.Parse(type, key), "d"); resultList.Add(key, int.Parse(val)); } return resultList; } }
public enum Sex { 男 = 0, 女 }
使用方法如下:
static void Main(string[] args) { var name = EnumHelper.GetEnumName<Sex>(1); Console.WriteLine(name); var dic = EnumHelper.getEnumDic<Sex>(); int a = (int)Sex.女; }
c#將枚舉轉換成字典集合