Logical operators on enums
本问题已经有最佳答案,请猛点这里访问。
给定一个包含4个元素的枚举
1 | enum fontType {bold,italic,underlined,struck} |
这个枚举类型的两个变量,称为Enum1和Enum2,分配如下
1 2 | fontType enum1=fontType.bold | fontType.italic; fontType enum2=fontType.underlined & fontType.struck; |
为什么输出上的enum1='italic'和enum2='underlined'?
如果要将枚举用作这样的位图,则需要为成员提供使用不同位的值:
1 2 3 4 5 6 7 8 | [Flags] enum MyEnum { Bold = 0x01, Italic = 0x02, Underlined = 0x04, Struck = 0x08 } |
默认情况下,它们被赋予了数字0、1、2、3——第一个什么也不做,第二个数字与最后一个数字重叠。
正如注释中所提到的,您还应该将
你用的是位运算符,它们就是这样做的。