C#枚举类型的常用操作总结
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,枚举类型是定义了一组"符号名称/值"配对。枚举类型是强类型的。每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueType又从system
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
北京云代账互联网科技公司
属于网络安全措施
西安防疫数据库丢失
济南app软件开发服务公司
法院全面维护网络安全
蓝页网络技术有限公司
关于网络安全演讲800字
card耐药基因数据库
pc软件开发语言
数据库大致结构
数据库怎么删除多条数据
西数数据库名称在哪看
网络安全讲座直播
excel数据库知识
网络安全谁可以与华为比
海口网络安全会议
服务器安全策略详细设置
实用计算机网络技术论文
怎么监控数据库数据到期
三级网络技术填空题总是错
汽车网络技术课后习题
服务器最多支持多少个cpu
淘股网络技术有限公司
团队任务管理 自建服务器
368亿美元数据库市场
pc软件开发语言
易享网络技术有限公司
数据库索引多用b树
ftp服务器 的作用
exl复制显示的数据库