我已经用 [Flag]
属性定义了一个 enum
。
给定一个整数值,我想打印整数值中设置的位的所有 enum
值。
这是我目前所拥有的。
string s = string.Join(", ", Enum.GetValues(typeof(MyEnumType)).OfType<Enum>()
.Where(x => (MyIntValue & (int)x) != 0));
但是在最后一行中对 int
的类型转换给了我以下错误。
Cannot convert type 'System.Enum' to 'int'
我希望 Microsoft 将所有返回 Array
的框架代码替换为支持 LINQ 的类型。
但是有没有一种简单的方法可以做到这一点?
转换为 MyEnumType
而不是通用的 Enum
应该可以解决问题:
string s = string.Join(
", ",
Enum.GetValues(typeof(MyEnumType))
.OfType<MyEnumType>()
.Where(x => (MyIntValue & (int)x) != 0));
你真的应该使用 Cast
而不是 OfType
因为你确定这些项目是 MyEnumType
类型。
我是一名优秀的程序员,十分优秀!