C#枚举类型的常用操作总结
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,枚举类型是定义了一组"符号名称/值"配对。枚举类型是强类型的。每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueType又从system
千家信息网最后更新 2024年11月11日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安全错误
数据库的锁怎样保障安全
数据库中分支结构
逆水寒反馈问题的服务器名是什么
长宁区立体化软件开发代理品牌
自己的域名服务器
寻找网络安全知识达人
向阿里云租服务器流程简单吗
汉字主键 db2数据库
服务器做图行吗
数据库实体参照模型
计算机网络技术基础视频
互联网黑科技全面亮相乌镇
保驾护航网络技术有限公司
海淀区进口软件开发指导
贵州德瑞软件开发
数据库重要技术
token数据库修改
微软数据库sql server
金蝶转换账套登录数据库
oa软件开发服务为先
php中链接数据库的 方法
网络安全结尾素材
linux服务器更新时间
移动手机充话费服务器异常
香港网络安全门户
xshell工具连接到服务器
cognos数据库配置
数据库网上旅游系统的报告
浪潮服务器怎么取消密码
国家计算机网络安全协会
反诈骗网络安全的手抄报