从枚举中获取值

时间:2016-01-06 06:09:46

标签: c# enums bit-manipulation flags

我有以下枚举:

[Flags]
public enum MyColor 
{
    None    = 0,
    Red = 1,
    Green = 2,
    Blue = 4,
    Orange = 8
}

我将允许选项的总和存储在变量中:

var sum = MyColor.Red | MyColor.Green | MyColor.Blue;

我想从这笔钱中提取选项。

即我想知道这个总和中包含哪些值。我希望从这个变量中收集红色,绿色和蓝色选项。

你可以帮我这样做吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试这样做

foreach (MyColor value in Enum.GetValues(sum.GetType()))
    if (sum.HasFlag(value))
        //Here it is, do something with it

答案 1 :(得分:0)

改进David Pilkington的答案;

var colorCollection = new List<MyColor>();
var colorValues = Enum.GetValues(typeof(MyColor));

foreach (var color in colorValues)
   if(sum.HasFlag(color))
      colorCollection.Add(color);

更多关于HasFlag