标记以 0x 作为前缀的枚举值的拼写是什么?
What spelling is that flags enum values having 0x as prefix?
我发现此 enum
具有 Flags
属性:
[Flags]
public enum Technology
{
None = 0x0000,
X1 = 0x0001,
X2 = 0x0002,
X3 = 0x0004,
X4 = 0x0008,
X5 = 0x0010,
X6 = 0x0020,
}
分配给 enum
成员的值,它是什么拼写?
那会一样吗?
[Flags]
public enum Technology
{
None = 0,
X1 = 1,
X2 = 2,
X3 = 4,
X4 = 8,
X5 = 10,
X6 = 20,
}
如果是,为什么 X5
不是 16 两倍于 X4
的值,因为该逻辑发生在 X1
到 X4
!
0x0000
在十六进制中为 0。这意味着 0x0010
实际上是十进制的 16
- 使两个枚举的 x5
和 x6
成员不同。
为了使它们相同,在第二个 enum
中,您需要 16
和 32
用于 x5
和 x6
。
0x
前缀告诉 c# 编译器该值是十六进制的 - 如 Integer Literals paragraph in Integral numeric types (C# reference):
中所述
Integer literals can be
- decimal: without any prefix
- hexadecimal: with the 0x or 0X prefix
- binary: with the 0b or 0B prefix (available in C# 7.0 and later)
嗯,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,
}
我发现此 enum
具有 Flags
属性:
[Flags]
public enum Technology
{
None = 0x0000,
X1 = 0x0001,
X2 = 0x0002,
X3 = 0x0004,
X4 = 0x0008,
X5 = 0x0010,
X6 = 0x0020,
}
分配给 enum
成员的值,它是什么拼写?
那会一样吗?
[Flags]
public enum Technology
{
None = 0,
X1 = 1,
X2 = 2,
X3 = 4,
X4 = 8,
X5 = 10,
X6 = 20,
}
如果是,为什么 X5
不是 16 两倍于 X4
的值,因为该逻辑发生在 X1
到 X4
!
0x0000
在十六进制中为 0。这意味着 0x0010
实际上是十进制的 16
- 使两个枚举的 x5
和 x6
成员不同。
为了使它们相同,在第二个 enum
中,您需要 16
和 32
用于 x5
和 x6
。
0x
前缀告诉 c# 编译器该值是十六进制的 - 如 Integer Literals paragraph in Integral numeric types (C# reference):
Integer literals can be
- decimal: without any prefix
- hexadecimal: with the 0x or 0X prefix
- binary: with the 0b or 0B prefix (available in C# 7.0 and later)
嗯,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,
}