关于C#中按位处理枚举的说明

一、定义:
在枚举上添加[Flags]属性,并以2的幂定义枚举的各个值:

[Flags]
public enum TestEnum
{
    Value0 = 1,
    Value1 = 2,
    Value2 = 4,
    Value3 = 8,
    Value4 = 16,
    All = Value0 | Value1 | Value2 | Value3 | Value4
}

二、比较:
按位运算比较枚举值是否包括某个值:

// 定义枚举变量
TestEnum testEnum = TestEnum.Value1 | TestEnum.Value2;
// 判断枚举变量是否包含枚举Value2的值
bool hasValue = ((testEnum & TestEnum.Value2) == TestEnum.Value2);
// 返回判断结果
return hasValue;

更多信息请参阅:FlagsAttribute 类 (System)

发表回复