我有以下枚举:
[Flags]
public enum MyColor
{
None = 0,
Red = 1,
Green = 2,
Blue = 4,
Orange = 8
}
我将允许选项的总和存储在变量中:
var sum = MyColor.Red | MyColor.Green | MyColor.Blue;
我想从这笔钱中提取选项。
即我想知道这个总和中包含哪些值。我希望从这个变量中收集红色,绿色和蓝色选项。
你可以帮我这样做吗?答案 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