c# 检查枚举是否包含在选项中

标签 c# enums contains options

这个问题在这里已经有了答案:





What does the [Flags] Enum Attribute mean in C#?

(13 个回答)


4年前关闭。




我正在尝试检查可用选项中是否包含枚举选项。
我用英语解释它有点困难。
这是代码:

public enum Fruits
{
    Apple,
    Orange,
    Grape,
    Ananas,
    Banana
}


var available = Fruits.Apple | Fruits.Orange | Fruits.Banana;
var me = Fruits.Orange;

我正在尝试检查 me 变量是否包含在可用变量中。
我知道它可以完成,因为它也与 RegexOptions 一起使用。

最佳答案

最简单的方法是使用 & :

if ((available & me) != 0)

您可以在此处使用 0,因为存在从常量 0 到任何枚举的隐式转换,这非常方便。

请注意,您的枚举应使用 Flags 定义属性和适当的面向位的值:
[Flags]
public enum Fruits
{
    Apple = 1 << 0,
    Orange = 1 << 1,
    Grape = 1 << 2,
    Ananas = 1 << 3,
    Banana = 1 << 4
}

如果你不想让它成为 Flags枚举,你应该使用 List<Fruit>或类似以存储可用选项。

关于c# 检查枚举是否包含在选项中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44775700/

相关文章:

c# - 处理选择列表

c# - 如何在 C# 中绑定(bind)到 Grid ColumnDefinition Width

java - 使用 String name() 声明实现 Java 接口(interface)的 Kotlin 枚举

c++:通过关键字获取枚举值,关键字是一个变量

java - 将枚举作为方法中的参数传递?

jquery - 根据 DIV 内的文本值隐藏 DIV

c# - 如何为 Cloudwatch 创建自定义文本格式化程序?

c# - Xml Linq Query(通过属性和属性值获取元素)

java - 为什么 set.contains 不使用重写的 equals() 方法?

python - 遍历数据帧以查找 str 值在元组数组中出现的次数