分解一个枚举类型变量包含的多个枚举值
来源:互联网 发布:mysql where or 效率 编辑:程序博客网 时间:2024/06/05 14:12
目标:分解一个枚举类型变量包含的多个枚举值
如:
Langs langJava = Langs.Csharp | Langs.Python;
解决办法:
关键点在于枚举定义时需加[System.Flags]特性标记
枚举定义:
[System.Flags]enum Langs { Csharp = 1, Java = 2, Python = 4, Lisp = 16 };
分解函数:
/// <summary> /// 分解枚举类型值,允许一个枚举实例被辅多个值,该枚举类型必须[System.Flags]标记 /// </summary> /// <param name="item">枚举</param> /// <returns>包含的多个枚举值集合</returns> public IEnumerable<Enum> GetValueFromEnumInstance(Enum item) { Dictionary<string, Enum> values = new Dictionary<string, Enum>(); foreach (Enum value in Enum.GetValues(item.GetType())) { values.Add(value.ToString(), value); } List<string> itemNames = item.ToString().Split(',').ToList<string>(); List<Enum> result = new List<Enum>(); foreach (var enumItem in values) { string itemName = itemNames.FirstOrDefault<string>(x => x.Trim().Equals(enumItem.Key.Trim())); if (!string.IsNullOrEmpty(itemName)) { result.Add(enumItem.Value); itemNames.Remove(itemName); } } return result.Distinct<Enum>(); }
调用例子:
Langs langJava = Langs.Csharp | Langs.Python; Console.WriteLine(string.Format("first:{0}",langJava)); foreach (var name in GetValueFromEnumInstance(langJava)) Console.WriteLine("name : " + name);
0 0
- 分解一个枚举类型变量包含的多个枚举值
- 使用枚举类型的变量
- 复杂的变量类型---枚举,结构,数组
- 复杂的变量类型:枚举,结构,数组
- 枚举变量的使用和类型声明
- [转]枚举类型和枚举变量
- [转]枚举类型和枚举变量
- 笔记 枚举变量的值
- 利用枚举类型变量求从5种颜色球中取3个不同颜色球的取法
- 把枚举类型的值绑定到一个ComboBox中
- swift 传入多个枚举类型 '|'
- 使用枚举类型的值创建枚举类型
- 多个枚举的判断
- 枚举变量的定义
- 枚举变量的使用
- enum 枚举 检查一个值是否包含在一个枚举中
- 枚举类型的用法
- 枚举类型的使用
- PC端无法访问共享文件服务器的解决方案
- php 分页
- 荷蘭銀行將區塊鏈應用於跨境支付
- Linux下的常用命令学习(1.chmod)
- Java 抽象方法实例化
- 分解一个枚举类型变量包含的多个枚举值
- Linux---disk, partitions, PV, LV
- java中this和super的区别
- OpenLayers3 在 Mac 视网膜屏下的响应式设计
- (Linux)vim编辑器的使用及常用技巧
- JSP页面实现批量删除数据
- 最近人生感悟
- 在Python3.4中实现opencv3.1.0的安装配置
- springMVC源码分析--国际化实现Session和Cookie(二)