c# - 为什么我不应该在标志枚举中使用 0

标签 c# enums flags

<分区>

Possible Duplicate:
Should an Enum start with a 0 or a 1?

为什么我不应该在标志枚举中使用 0?我已经多次阅读这篇文章并且想 知道原因:)

最佳答案

Why should I never use 0 in a flag enum?

该问题基于不正确的假设。您应该始终在标志枚举中使用零。它应该始终设置为“无”。

除了表示“未设置任何标志”之外,您不应该将它用于任何其他用途。

Why not?

因为如果零具有“无”以外的含义,它会变得非常困惑。人们有合理的期望 ((e & E.X) == E.X) 意味着“是否设置了 X 标志?”但如果 X 为零,则此表达式将始终为真,即使逻辑上标志未“设置”。

关于c# - 为什么我不应该在标志枚举中使用 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811047/

相关文章:

java - JButton 的 Instanceof、Enum 或多个监听器

qt - 具有作用域枚举的 QFlags 的相等运算符

c# - 类内委托(delegate)的默认值

c# - 在静态方法中引用 "self"类型 - C#

c# - Windows Phone 8.1 slider - 检测用户交互

c# - 在 Codedom 中使用不安全代码构建程序

枚举类型 "The public type EngineType must be defined in its own file Car.java"的 Java 编译错误

java - 枚举 : Difference between using enum and class with static variables