那些你可能没有关注过的枚举知识。
【组合枚举(Flags Enum)】
可以对枚举的成员进行组合,主要是改变ToString()方法的返回值,让可组合枚举调用ToString()时返回枚举成员名。
【Flags特性】
1、按约定,如果枚举成员可组合,falgs特性必须被添加到枚举类型上
注意:如果声明了这样的枚举却没有使用flags属性,你仍然可以组合枚举的成员,但是调用枚举实例的ToString()方法时,输出的将是一个数值,而不是一组名称。
2、按约定,可组合枚举的名称应该是复数的(比如:BorderSides,名称结尾带 s)。
【注意点】
为了避免歧义,枚举成员需要显示的赋值。典型的就是使用2的乘幂。
|
|
【运算】
可以使用位操作符,例如 | 和 &
|
|
【运算原理】
枚举值转为二进制后按位操作
【枚举支持的操作符】
操作符 | 描述 |
---|---|
= | 赋值 |
== | 判断是否相等 |
!= | 判断是否不相等 |
<= | 判断是否小于等于 |
>= | 判断是否大于等于 |
< | 左移 |
> | 右移 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
+ | 加 |
- | 减 |
~ | 按位取反 |
++ | 自增 |
– | 自减 |
+= | 加 |
-= | 减 |
sizeof | 获取枚举的大小 |
【类型安全问题】
检查枚举值的合理性:Enum.IsDefined() 静态方法。
|
|
以上知识整理自B站大佬的视频:真会C# … 3.7 3.8 枚举和嵌套类型