2016-01-06 3 views
2

У меня есть следующие перечисления:Получение значения обратно из перечисления суммы

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

Я хранящее сумму разрешенных вариантов в переменной сказать:

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

Я хочу, чтобы извлечь параметры обратно из эта сумма.

i.e Я хочу знать, какие значения содержатся в этой сумме. Мне нужна коллекция опций Red, Green и Blue от этой переменной обратно.

Можете ли вы помочь мне в этом?

ответ

2

Вы можете попробовать сделать это

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

Улучшение на ответ David Pilkington «s;

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

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

Подробнее о HasFlag

Смежные вопросы