Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有十六进制值的枚举基本算法_C#_Enums_Hex - Fatal编程技术网

C# 带有十六进制值的枚举基本算法

C# 带有十六进制值的枚举基本算法,c#,enums,hex,C#,Enums,Hex,假设我们的枚举为: public enum SomeEnum { None = 0x0000, Value1 = 0x0001, Value2 = 0x0002, Value3 = 0x0200 Defautl = Value1 | Value2 SomeOtherDefault = Value1 | Value3 } 因此,在这种情况下,对于给定的SomeEnum类型值,我们如何检查Value2是否存在,然后切换它(

假设我们的枚举为:

public enum SomeEnum
{
     None = 0x0000,
     Value1 = 0x0001,        
     Value2 = 0x0002,
     Value3 = 0x0200
     Defautl = Value1 | Value2
     SomeOtherDefault = Value1 | Value3
}
因此,在这种情况下,对于给定的SomeEnum类型值,我们如何检查Value2是否存在,然后切换它(如果未设置则设置,反之亦然)? 给定值可以是:

tempValue = Value1 | Value3 | Value2
这一定很简单,但我不习惯枚举中的十六进制值

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

tempValue = tempValue ^ Value2;
或者如下面的答案所示

tempValue ^= Value2;
要切换它,请执行以下操作:

myValue ^= Value2;
要检查是否有:

if (myValue & Value2 != 0)

@Soner我不明白你编辑的意思?你甚至不需要投。他还问了一种如何切换它的方法,你知道,如果你存储在
int
变量中,你确实需要强制转换它。你为什么这么做?不要测试它是否是阳性的。对于这些标志,这并不重要,但一般来说,标志可以设置符号位。@BenVoigt True,已修复。谢谢^I是我要找的运算符!!