C# 枚举使用整理_C# enum详解

一、枚举的定义

枚举类型 是由基础整型数值类型的一组命名常量定义的值类型

System.Enum 类型是所有枚举类型的抽象基类。 它提供多种方法来获取有关枚举类型及其值的信息。 有关更多信息和示例,请参阅 System.Enum API 参考页。

可在基类约束中使用 System.Enum(称为枚举约束),以指定类型参数为枚举类型。 所有枚举类型也都满足 struct 约束,此约束用于指定类型参数为不可为 null 的值类型

使用枚举的优点:

1.增加代码的可读性,使代码更加清晰;它允许使用描述性的名称表示整数值。

2.标准化业务归类、业务类型;有助于确保给变量指定合法的、期望的值。

使用场景:

数据分类,操作类型,订单状态/流程状态

二、枚举的使用

默认情况下,枚举成员的关联常数值为类型 int;

它们从零开始,并按定义文本顺序递增 1。

可以显式指定任何其他整数数值类型作为枚举类型的基础类型。

还可以显式指定关联的常数值。关键词 enum

enum Season
{
    Spring,//标识0
    Summer,//标识1
    Autumn,//标识2
    Winter //标识3
}

指定数字

enum ErrorCode : ushort
{
    None = 0,
    Unknown = 1,
    ConnectionLost = 100,
    OutlierReading = 200
}

三、枚举和数字的转换

数据类型转换:

//将枚举,转换成数字
int num = Season.春天.GetHashCode();
Console.WriteLine(num);

//将数字,转换成枚举
Season seson = (Season)System.Enum.ToObject(typeof(Season), 1);

常用操作封装:

        /// <summary>
        /// 获取指定类型的int值得枚举对象
        /// </summary>
        /// <param name="value">值</param>
        /// <param name="t">类型</param>
        /// <returns></returns>
        public static T ToObject<T>(int value)
        {
            Type t = typeof(T);
            return (T)System.Enum.ToObject(t, value);
        }
        /// <summary>
        /// 指定枚举的string值,获取枚举对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value"></param>
        /// <returns></returns>
        public static T Parse<T>(string value)
        {
            return (T)System.Enum.Parse(typeof(T), value);
        }
        /// <summary>
        /// 获取指定类型的枚举列表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static Dictionary<int, string> GetList<T>()
        {
            Type t = typeof(T);
            Dictionary<int, string> dic = new Dictionary<int, string>();
            foreach (var item in System.Enum.GetValues(t))
            {
                dic.Add((int)item, System.Enum.GetName(t, item));
            }
            return dic;
        }
        // 获取name
        public static string GetName<T>(int id)
        {
            Type t = typeof(T);
            return System.Enum.ToObject(t, id).ToString();
        }
        public static List<object> GetNameList<T>()
        {
            Type t = typeof(T);
            List<object> res = new List<object>();
            foreach (var item in System.Enum.GetValues(t))
            {
                res.Add(new { id = (int)item, name = System.Enum.GetName(t, item) });
            }
            return res;
        }

更多:

C# 去除字符串中的空格方案整理

C#数组分组_C#数据分组_C# Linq分组使用整理

C#时间使用整理,DateTime 使用整理

猜你喜欢

转载自blog.csdn.net/u011127019/article/details/131740128
今日推荐