我发现有或没有标志属性,如果我定义了以下枚举,我可以执行位操作

enum TestType
{
    None = 0x0,
    Type1 = 0x1,
    Type2 = 0x2
}

我想知道为什么我们需要标志属性?

最佳答案

C会以同样的方式对待他们,但C并不是唯一的消费者:
PropertyGrid将以不同的方式呈现以允许组合
XmlSerializer将接受/拒绝基于此标志的分隔组合
Enum.Parse同样(从字符串),枚举的.ToString()行为也将不同
显示或处理该值的许多其他代码将对它们进行不同的处理
不过,更重要的是,它是其他开发人员(和代码)的意图表达;这意味着要视为组合,而不是排他的值。

07-24 09:37
查看更多