枚举enum

一。枚举(enum type)通常用来表示一组常量。枚举是值数据类型,是强类型,使用 enum 关键字声明

枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.

定义:

 public enum Sex
        {
            男 = 0,
            女 = 1
        }

也可以简写,可以不写值或者只写的一个

 public enum Sex
        {
            男 = 0,
            女 
        }

女默认是1

二。数据库设计使用场景

在数据库设计人员表(person)时有性别字段Sex(0代表男,1代表女),我们一般用bit或者int类型表示。

1.在编程时我们给Sex字段赋值的方式为:

1).  Sex=0;

2).  Sex=(int)SexEnum.Man;

其中SexEnum为定义性别的枚举类型,我们可以看出第二种方式的可读性更强。

2.在编程时我们,如果Sex字段作为一个搜索条件的话,我们可能需要以下拉选择的方式展现所有可以选择的情况。那么我们就需要将SexEnum转换成一个字典集合然后绑定到对应的select标签,具体怎么实现请看下面的示例代码。

三。enum、int、string三种类型之间的互转 

 

public enum Sex
        {
            男 = 0, 女
        }
static void Main(string[] args)
        {
            var x = Sex.女;//这里x的类型是Sex
            Console.WriteLine(x);//输出 女

            int a = (int)Sex.女;//将枚举转换成整数
            Console.WriteLine(a);//输出 1

            string b = Sex.女.ToString();//将枚举转换成字符串
            Console.WriteLine(b);//输出 女

            Sex c = (Sex)Enum.Parse(typeof(Sex), "");//将字符串转换成枚举
            Console.WriteLine(c);//输出 女

            Sex d = (Sex)1;//将整数转换成枚举
            Console.WriteLine(d);//输出 女

            string s = Enum.GetName(typeof(Sex), 1);//将整数转换成字符串
            Console.WriteLine(s);//输出 女
            //循环枚举
            foreach(Sex sex in Enum.GetValues(typeof(Sex)))
            {
                Console.WriteLine(sex.ToString() + "---" + (int)sex);
                //输出 男---0  女---1
            }

        }
View Code

 

四。枚举转换成字典集合的通用方法

public enum Sex
    {
        man,
        woman
    }
    public enum Color
    {
        red,
        blue
    }
View Code
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;
        }
        /// <summary>
        /// 将枚举转换成字典
        /// </summary>
        /// <typeparam name="TEnum"></typeparam>
        /// <returns></returns>
        public static Dictionary<string, int> GetDic<TEnum>()
        {
            Dictionary<string, int> dic = new Dictionary<string, int>();
            Type t = typeof(TEnum);
            var arr = Enum.GetValues(t);
            foreach (var item in arr)
            {
                dic.Add(item.ToString(), (int)item);
            }

            return dic;
        }

    }
View Code
static void Main(string[] args)
        {
            var name = EnumHelper.GetEnumName<Sex>(1);
            Console.WriteLine("数字转字符串:"+name);
            var dic1 = EnumHelper.getEnumDic<Sex>();
            Console.WriteLine("枚举转字典集合方法1:");
            foreach (var item in dic1)
            {
                Console.WriteLine(item.Key + "==" + item.Value);
            }
            Console.WriteLine("枚举转字典集合方法2:");
            var dic= EnumHelper.GetDic<Color>();
            foreach (var item in dic)
            {
                Console.WriteLine(item.Key+"=="+item.Value);
            }
            Console.ReadLine();
        }
View Code

执行结果:

五。枚举转换成集合的通用方法

  public enum FeedbackResult
    {
        满意=1,很满意,非常满意
    }

  var data = (typeof(FeedbackResult)).ToJArray();

输出结果:

"data": [
        {
            "Name": "满意",
            "Value": 1
        },
        {
            "Name": "很满意",
            "Value": 2
        },
        {
            "Name": "非常满意",
            "Value": 3
        }
    ]
View Code
原文地址:https://www.cnblogs.com/qingheshiguang/p/13879193.html