这个问题在这里已经有了答案:
What does the [Flags] Enum Attribute mean in C#?
(13 个回答)
7年前关闭。
给定一个有 4 个元素的枚举
enum fontType {bold,italic,underlined,struck}
以及这个枚举类型的两个变量 enum1 和 enum2,它们的赋值如下
fontType enum1=fontType.bold | fontType.italic;
fontType enum2=fontType.underlined & fontType.struck;
为什么 enum1 = 'italic' 和 enum2 = 'underlined' 输出?
最佳答案
如果您要将枚举用作这样的位图,则需要为成员指定值,每个值使用不同的位:
[Flags]
enum MyEnum
{
Bold = 0x01,
Italic = 0x02,
Underlined = 0x04,
Struck = 0x08
}
默认情况下,它们被赋予了数字 0,1,2,3 - 第一个什么都不做,后两个与最后一个重叠。
正如评论中提到的,您还应该添加
[Flags]
属性到枚举定义,所以如果你这样做 ToString()
你会得到一个格式正确的结果(这样每个人都知道你是如何使用枚举的) - 如果不这样做不会影响它的工作方式,但是。
关于c# - 枚举上的逻辑运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20379056/