迭代Flags Enum中的值?

如果我有一个包含标志枚举的变量,我可以以某种方式迭代该特定变量中的位值吗?或者我是否必须使用Enum.GetValues迭代整个枚举并检查哪些枚举?



摇曳的蔷薇
浏览 442回答 3
3回答

慕哥9229398

static IEnumerable<Enum> GetFlags(Enum input){&nbsp; &nbsp; foreach (Enum value in Enum.GetValues(input.GetType()))&nbsp; &nbsp; &nbsp; &nbsp; if (input.HasFlag(value))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; yield return value;}

冉冉说

这是问题的Linq解决方案。public static IEnumerable<Enum> GetFlags(this Enum e){&nbsp; &nbsp; &nbsp; return Enum.GetValues(e.GetType()).Cast<Enum>().Where(e.HasFlag);}
打开App,查看更多内容
随时随地看视频慕课网APP