好吧,0x
前缀表示十六进制,而不仅仅是十进制。所以等效的声明将是
十六进制(前缀0x
)
[Flags]
public enum Technology
{
None = 0x0000,X1 = 0x0001,X2 = 0x0002,X3 = 0x0004,X4 = 0x0008,X5 = 0x0010,// 0x0010 == 1 * 16 + 0 == 16
X6 = 0x0020,// 0x0020 == 2 * 16 + 0 == 32
}
十进制
[Flags]
public enum Technology
{
None = 0,X1 = 1,X2 = 2,X3 = 4,X4 = 8,X5 = 16,X6 = 32,}
二进制(请注意0b
前缀)
[Flags]
public enum Technology
{
None = 0b000000,X1 = 0b000001,X2 = 0b000010,X3 = 0b000100,X4 = 0b001000,X5 = 0b010000,X6 = 0b100000,}
,
0x0000
以十六进制表示为0。这意味着0x0010
实际上是十进制的16
-使两个枚举的x5
和x6
成员不同。
为了使它们相同,在第二个enum
中,您需要16
和32
的值x5
和x6
。
0x
前缀告诉c#编译器该值为十六进制-如Integer Literals paragraph in Integral numeric types (C# reference)中所述:
整数文字可以是
- 十进制:没有任何前缀
- 十六进制:前缀为0x或0X
- binary:带有0b或0B前缀(在C#7.0和更高版本中可用)
本文链接:https://www.f2er.com/3152910.html