c# - 枚举上的逻辑运算符

标签 c# enums

这个问题在这里已经有了答案:





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/

相关文章:

c# - 如何将 MVC6 文件夹重新定位到另一个文件夹并仍然让它们工作

c# - 实现二进制哈希,如 http ://www. fileformat.info/tool/hash.htm

java - 使用枚举集的泛型类构造函数的问题

Swift 编译错误 : 'case' label can only appear inside a 'switch' statement?

swift - 更改关联枚举的值

ios - 表达式类型不明确,没有更多上下文(枚举)

c# - 如何将重复的监视器检测为单独的屏幕

c# - 从 Process.TotalProcessorTime 计算进程 cpu 使用率

c# - 使用线程会节省时间吗?

java - 枚举帮助/建议 - java