【问题标题】:c# check enum is contained in options [duplicate]c#检查枚举是否包含在选项中[重复]
【发布时间】:2017-11-30 05:41:18
【问题描述】:

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

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


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

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

【问题讨论】:

  • 这不是 100% 完全复制,但它完全回答了您的问题。

标签: c# enums contains options


【解决方案1】:

最简单的方法是使用&

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&lt;Fruit&gt; 或类似的方式来存储可用选项。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2014-09-19
相关资源
最近更新 更多