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

本文关键字:枚举 十六进制 | 更新日期: 2023-09-27 18:23:52

假设我们有一个枚举为:

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

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

tempValue = Value1 | Value3 | Value2

这一定是一件简单的事情,但我不习惯枚举中的十六进制值。

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

切换:

myValue ^= Value2;

检查是否有:

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

切换

tempValue = tempValue ^ Value2;

或者下面的答案是

tempValue ^= Value2;