该0B前缀,可以用来表示二进制文字。
二进制文字允许从零和一构造数字,这使得查看数字的二进制表示形式中设置的位变得更加容易。这对于使用二进制标志很有用。
以下是指定intwith值34(= 2 5 + 2 1)的等效方法:
// 使用二进制文字: // 位数:76543210 int a1 = 0b00100010; // 二进制:明确指定位 // 现有方法: int a2 = 0x22; // 十六进制:每个数字对应于4位 int a3 = 34; // 十进制:很难看到设置了哪些位 int a4 = (1 << 5) | (1 << 1); // 按位算术:组合非零位
以前,enum只能使用以下示例中的三种方法之一来指定an的标志值:
[Flags] public enum DaysOfWeek { // 先前可用的方法: // 十进制十六进制位移 Monday = 1, // = 0x01 = 1 << 0 Tuesday = 2, // = 0x02 = 1 << 1 Wednesday = 4, // = 0x04 = 1 << 2 Thursday = 8, // = 0x08 = 1 << 3 Friday = 16, // = 0x10 = 1 << 4 Saturday = 32, // = 0x20 = 1 << 5 Sunday = 64, // = 0x40 = 1 << 6 Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday, Weekends = Saturday | Sunday }
使用二进制文字,更明显的是设置了哪些位,使用它们不需要了解十六进制数字和按位算术:
[Flags] public enum DaysOfWeek { Monday = 0b00000001, Tuesday = 0b00000010, Wednesday = 0b00000100, Thursday = 0b00001000, Friday = 0b00010000, Saturday = 0b00100000, Sunday = 0b01000000, Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday, Weekends = Saturday | Sunday }