Скажем, у меня есть это перечисление:
[Flags]
public enum SomeType
{
Val1 = 0,
Val2 = 1,
Val3 = 2,
Val4 = 4,
Val5 = 8,
Val6 = 16,
All = Val1 | Val2 | Val3 | Val4 | Val5 | Val6
}
и некоторые переменные:
SomeType easyType = SomeType.Val1 | SomeType.Val2;
SomeType complexType = SomeType.All;
Если я хочу перебирать значения первого перечисления, я могу просто сделать:
foreach(string s in easyType.ToString().Split(','))
{ ... }
Однако, когда я пытаюсь применить тот же подход к "complexType", я получаю значение "Все", что, конечно, верно, потому что это также одно из возможных значений перечисления. Но есть ли опрятный способ увидеть, какие значения есть SomeType. Все создано? Я знаю, что могу сделать ручную петлю через все такие значения:
if(complexType.HasFlag(ManualType.Val1) && ...