C#检查枚举包含在选项中

c# check enum is contained in options

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
public enum Fruits
{
    Apple,
    Orange,
    Grape,
    Ananas,
    Banana
}


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

我正在尝试检查Me变量是否包含在可用变量中。我知道这是可以做到的,因为它也与regexions一起使用。


最简单的方法是使用&

1
if ((available & me) != 0)

这里可以使用0,因为有一个从常量0到任何枚举的隐式转换,这非常方便。

注意,您的枚举应该使用Flags属性和适当的面向位值定义,尽管:

1
2
3
4
5
6
7
8
9
[Flags]
public enum Fruits
{
    Apple = 1 << 0,
    Orange = 1 << 1,
    Grape = 1 << 2,
    Ananas = 1 << 3,
    Banana = 1 << 4
}

如果不想使其成为Flags枚举,则应使用List或类似的方法来存储可用选项。