c# – 如何获得复杂的枚举值字符串表示
发布时间:2020-12-15 03:55:39 所属栏目:百科 来源:网络整理
导读:假设我有这个枚举: [Flags]public enum SomeType{ Val1 = 0,Val2 = 1,Val3 = 2,Val4 = 4,Val5 = 8,Val6 = 16,All = Val1 | Val2 | Val3 | Val4 | Val5 | Val6} 和一些变量: SomeType easyType = SomeType.Val1 | SomeType.Val2;SomeType complexType = Som
假设我有这个枚举:
[Flags] public enum SomeType { Val1 = 0,Val2 = 1,Val3 = 2,Val4 = 4,Val5 = 8,Val6 = 16,All = Val1 | Val2 | Val3 | Val4 | Val5 | Val6 } 和一些变量: SomeType easyType = SomeType.Val1 | SomeType.Val2; SomeType complexType = SomeType.All; 如果我想循环访问第一个枚举的值,我可以简单地做: foreach(string s in easyType.ToString().Split(',')) { ... } 然而,当我尝试对’complexType’应用相同的方法时,我得到值“All”,这当然是有效的,因为它也是枚举的可能值之一.但是,是否有一个整洁的方法来实际看到SomeType.All创建的值是什么?我知道我可以手动循环遍历所有的值: if(complexType.HasFlag(ManualType.Val1) && ... 解决方法var result = string.Join(",",Enum.GetValues(typeof(SomeType)) .Cast<SomeType>() .Where(v => complexType.HasFlag(v))); 你可以编写一个扩展方法,以避免重复你自己. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Sqlite中通过Replace来实现插入和更新
- 深入理解Flash Player的应用程序域(Application Domains)
- 详解Vuejs2.0 如何利用proxyTable实现跨域请求
- AJAX - $.get( url, [data], [success], [type] )-2
- 发现ajax的一个好站
- Quick-Cocos2d-x初学者游戏教程(三)
- React Native 之ScrollView轮播图实现
- 为什么我的homespun sizeof运算符需要char * cast?
- c# – 在Visual Studio 2010中为不同的构建平台使用不同的引
- Flash Builder4.7破解方法的实践