我遇到了这个问题:What does the [Flags] Enum Attribute mean in C#?
我一直想知道的一件事是,使用接受的answer's example,如果我声明:
[Flags]
public enum MyColors
{
Yellow = 1,
Green = 2,
Red = 3,
Blue = 4
}
该示例中的以下步骤会导致错误吗?如果没有,我该如何前往MyColors.Red?
最佳答案
这将导致意外的结果。使唯一性的常见做法是将枚举值标记为2的幂。
例如按位Yellow
或Green
将产生Red
,依此类推。
MyColors colors = MyColors.Yellow | MyColors.Green;
if (colors == MyColors.Red)
{
Console.WriteLine("Oops!")
}
还要注意
Flags
属性在这里什么也不做,给人的印象是您可以按位或使用。关于c# - 如果我们按顺序声明[Flags]枚举会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22755115/