如果我有一个包含标志枚举的变量,我可以以某种方式迭代该特定变量中的位值吗?或者我是否必须使用Enum.GetValues迭代整个枚举并检查哪些枚举?
3 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
static IEnumerable<Enum> GetFlags(Enum input)
{
foreach (Enum value in Enum.GetValues(input.GetType()))
if (input.HasFlag(value))
yield return value;
}
冉冉说
TA贡献1877条经验 获得超1个赞
这是问题的Linq解决方案。
public static IEnumerable<Enum> GetFlags(this Enum e)
{
return Enum.GetValues(e.GetType()).Cast<Enum>().Where(e.HasFlag);
}
- 3 回答
- 0 关注
- 461 浏览
添加回答
举报
0/150
提交
取消