C#枚举类型的常用操作总结
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,枚举类型是定义了一组"符号名称/值"配对。枚举类型是强类型的。每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueType又从system
千家信息网最后更新 2026年10月31日C#枚举类型的常用操作总结
枚举类型是定义了一组"符号名称/值"配对。枚举类型是强类型的。每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueType又从system.Object派生,所以枚举类型是指类型。
编译枚举类型时,C#编译器会把每个符号转换成类型的一个常量字段。C#编译器将枚举类型视为基元类型。
1.获取枚举列表:
////// 获取枚举列表 /// /// 枚举的类型 ///枚举列表 public static DictionaryGetEnumList(Type enumType) { var dic = new Dictionary (); try { var fd = enumType.GetFields(); for (var index = 1; index < fd.Length; ++index) { var info = fd[index]; var fieldValue = System.Enum.Parse(enumType, fd[index].Name); var attrs = info.GetCustomAttributes(typeof(EnumTextAttribute), false); foreach (EnumTextAttribute attr in attrs) { var key = (int)fieldValue; if (key == -100) continue; var value = attr.Text; dic.Add(key, value); } } return dic; } catch (Exception ex) { throw new Exception(ex.Message); } }
2.获取枚举名称:
////// 获取枚举名称 /// /// 枚举的类型 /// 枚举值 ///如果枚举值存在,返回对应的枚举名称,否则,返回空字符 public static string GetEnumTextById(Type enumType, int id) { var ret = string.Empty; try { var dic = GetEnumList(enumType); foreach (var item in dic) { if (item.Key != id) continue; ret = item.Value; break; } return ret; } catch (Exception ex) { throw new Exception(ex.Message); } }
3.根据枚举值获取对应中文描述:新航道培训
////// 根据枚举值获取对应中文描述 /// /// 枚举值 ///枚举值中文描述 public static string GetEnumTextByEnum(object enumValue) { var ret = string.Empty; if ((int)enumValue == -1) return ret; try { var dic = GetEnumList(enumValue.GetType()); foreach (var item in dic) { if (item.Key != (int)enumValue) continue; ret = item.Value; break; } return ret; } catch (Exception ex) { throw new Exception(ex.Message); } }
4.获取枚举名称:
////// 获取枚举名称 /// /// 枚举的类型 /// 枚举值的位置编号 ///如果枚举值存在,返回对应的枚举名称,否则,返回空字符 public static string GetEnumTextByIndex(Type enumType, int index) { var ret = string.Empty; var dic = GetEnumList(enumType); if (index < 0 || index > dic.Count) return ret; var i = 0; foreach (var item in dic) { if (i == index) { ret = item.Value; break; } i++; } return ret; }
5.获取枚举值:
////// 获取枚举值 /// /// 枚举的类型 /// 枚举名称 ///如果枚举名称存在,返回对应的枚举值,否则,返回-1 public static int GetEnumIdByName(Type enumType, string name) { var ret = -1; if (string.IsNullOrEmpty(name)) return ret; var dic = GetEnumList(enumType); foreach (var item in dic) { if (string.Compare(item.Value, name, StringComparison.Ordinal) != 0) continue; ret = item.Key; break; } return ret; }
6.获取名字对应枚举值:
////// 获取名字对应枚举值 /// ///枚举类型 /// 枚举名称 ///public static T GetEnumIdByName (string name) where T : new() { var type = typeof(T); var enumItem = (T)TypeDescriptor.GetConverter(type).ConvertFrom("-1"); if (string.IsNullOrEmpty(name)) return enumItem; try { var fd = typeof(T).GetFields(); for (var index = 1; index < fd.Length; ++index) { var info = fd[index]; var fieldValue = System.Enum.Parse(type, fd[index].Name); var attrs = info.GetCustomAttributes(typeof(EnumTextAttribute), false); if (attrs.Length != 1) continue; var attr = (EnumTextAttribute)attrs[0]; if (!name.Equals(attr.Text)) continue; enumItem = (T)fieldValue; break; } return enumItem; } catch (Exception ex) { throw new Exception(ex.Message); } }
7.获取枚举值所在的位置编号:
////// 获取枚举值所在的位置编号 /// /// 枚举的类型 /// 枚举名称 ///如果枚举名称存在,返回对应的枚举值的位置编号,否则,返回-1 public static int GetEnumIndexByName(Type enumType, string name) { var ret = -1; if (string.IsNullOrEmpty(name)) return ret; var dic = GetEnumList(enumType); var i = 0; foreach (var item in dic) { if (string.Compare(item.Value, name, StringComparison.Ordinal) == 0) { ret = i; break; } i++; } return ret; }
类型
名称
位置
中文
编译
C#
名字
所在
空字符
符号
编译器
字段
常量
航道
培训
常用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网黑科技
A股互联网金融科技公司
互联网巨头科技公司
易互联网科技有限公司
中国 科技 互联网
互联网 科技创业
互联网科技论坛
互联网科技大会
互联网科技股有哪些
南山科技园互联网公司有哪些
贵州叶脉互联网科技有限公司所属行业
语蝶互联网科技有限公司
洛阳共同富裕互联网科技有限公司
互联网时代的科技公司
张召忠谈中国互联网科技
陕西九四连强互联网科技有限公司
上海万顺科技互联网有限公司招聘
保山浩联互联网科技有限公司
承德科技产业互联网平台
北京瑞云互联网科技有限公司
互联网 科技公司
期待互联网科技
亿策互联网科技
科技创新互联网企业
互联网科技汛
广州恒生互联网科技有限
中国科技创新与世界互联网大会
神州科技互联网有限公司
陕西彩京云互联网科技有限公司
互联网科技大会大佬