程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> c#將枚舉轉換成字典集合

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

編輯:C#基礎知識

枚舉在軟件開發中的用途

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.女;
        }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved