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是我要找的运算符!!