具有十六进制值基本算术的枚举

时间:2013-07-19 13:24:23

标签: c# enums hex

假设我们有一个枚举:

public enum SomeEnum
{
     None = 0x0000,
     Value1 = 0x0001,        
     Value2 = 0x0002,
     Value3 = 0x0200
     Defautl = Value1 | Value2
     SomeOtherDefault = Value1 | Value3
}

所以在这种情况下,对于给定的SomeEnum类型值,我们如何检查Value2是否存在然后切换它(如果未设置则设置或反之)? 给定值可以是:

tempValue = Value1 | Value3 | Value2

这一定很简单,但我不习惯在枚举中使用十六进制值。

2 个答案:

答案 0 :(得分:1)

int value = tempValue & Value2;
if (value != 0)
{
    // Value2 is set
}

切换

tempValue = tempValue ^ Value2;

或者如下面的答案那样

tempValue ^= Value2;

答案 1 :(得分:1)

要切换它:

myValue ^= Value2;

检查是否有:

if (myValue & Value2 != 0)