小组枚举成员?

时间:2011-12-30 00:57:58

标签: c# enums bit-manipulation bitwise-operators

我希望能够确定枚举值是否属于某个组。请参见伪示例:

[Flags]
public enum Animals
{
  Dog = 1,
  Cat = 2,
  WildAnimal = Dog | Cat,
  Fly = 4,
  Bee = 8,
  Insect = Fly | Bee
}

public static bool IsInsect(Animals animals)
{
  return Animals.Insect.Qualifies(animals);
}

public static bool Qualifies(this Animals groupName, Animals value)
{
  //Is there a bitwise operation for it?
}

4 个答案:

答案 0 :(得分:7)

答案 1 :(得分:2)

if ((groupName & value) != 0)
    ...

答案 2 :(得分:0)

使用“和”并检查公共位:

return (groupName & value) > 0;

答案 3 :(得分:0)

从每个枚举中放置描述属性或自定义属性,然后从反射中获取该信息。我在我的博客上提供了一个使用枚举的例子:

C# Using Extended Attribute Information on Objects

HTH