我遇到了这个问题: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的幂。

例如按位YellowGreen将产生Red,依此类推。

MyColors colors = MyColors.Yellow | MyColors.Green;
if (colors == MyColors.Red)
{
    Console.WriteLine("Oops!")
}

还要注意Flags属性在这里什么也不做,给人的印象是您可以按位或使用。

关于c# - 如果我们按顺序声明[Flags]枚举会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22755115/

10-13 06:03