具有十六进制值基本算术的枚举
本文关键字:枚举 十六进制 | 更新日期: 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;