首页 > 后端开发 > C++ > 如何仅迭代 C# 枚举中的设置标志?

如何仅迭代 C# 枚举中的设置标志?

DDD
发布: 2024-12-26 21:53:13
原创
389 人浏览过

How to Iterate Over Only the Set Flags in a C# Enum?

使用标志迭代枚举的值

问题:

当使用支持标志的枚举,如何专门迭代设置在一个特定的变量?是否可以避免使用 Enum.GetValues 迭代整个枚举?

答案:

是的,可以迭代枚举变量中的各个标志值无需枚举整个枚举并检查值是否已设置。这可以使用以下代码片段来实现:

static IEnumerable<Enum> GetFlags(Enum input)
{
    foreach (Enum value in Enum.GetValues(input.GetType()))
        if (input.HasFlag(value))
            yield return value;
}
登录后复制

解释:

  1. GetValues 方法返回指定枚举的所有可能值的数组type.
  2. 对于数组中的每个值,使用 HasFlag 方法检查输入中是否设置了标志变量。
  3. 如果设置了标志,则从 GetFlags 方法返回该值。

通过使用此方法,您可以有效地迭代枚举的各个标志值变量。

以上是如何仅迭代 C# 枚举中的设置标志?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板