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安全错误
数据库的锁怎样保障安全
耶加雪菲
百单网互联网科技有限公司怎么样
互联网和科技技术
科技与互联网
河南真二互联网科技有限公司
科技信息互联网
西安互联网科技
礼当家互联网科技
艾特科技互联网
百单互联网科技有限公司
苏州互联网科技贷款公司
互联网前沿科技
互联网科技公司招聘
佳云科技和互联网广告
知域互联网科技有限公司大骗子
消费医药和互联网科技
爱医互联网络科技
电子商务与互联网科技的关系
黑龙江互联网科技公司
现代科技的标志之一的互联网
广州紫鲸互联网科技有限公司
湖南永感互联网科技有限公司
礼当家互联网科技
未来的互联网科技
四个字互联网科技公司取名
以后互联网后是啥科技
互联网科技有哪些公司
中国航天科技大学国际工业互联网
下一代互联网重大应用科技园
唯美互联网科技