很多时候,我看到使用十六进制值的标志枚举声明。例如:
[Flags]
public enum MyEnum
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4,
Flag4 = 0x8,
Flag5 = 0x10
}
当我声明一个枚举时,通常会这样声明:
[Flags]
public enum MyEnum
{
None = 0,
Flag1 = 1,
Flag2 = 2,
Flag3 = 4,
Flag4 = 8,
Flag5 = 16
}
为什么有些人选择用十六进制而不是十进制写值,是否有原因或理由?从我的角度来看,使用十六进制值时很容易感到困惑,而意外地写成Flag5 = 0x16
而不是Flag5 = 0x10
。
Flag1 | Flag2
3,并且3不对应于的任何域值MyEnum
。
10
而不是0x10
使用十进制数的可能性更低?特别是由于这些是我们正在处理的二进制数,而十六进制可轻松地转换为二进制或从二进制转换为二进制?0x111
比273
…… 更令人讨厌的翻译