c#將枚舉轉換成字典集合

來源:互聯網
上載者:User

標籤:

枚舉在軟體開發中的用途

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#將枚舉轉換成字典集合

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.