是否需要在位标志枚举类型中包含“ None = 0”?

时间:2019-02-21 07:27:41

标签: c# enums

official document中,为元素分配的值class Myclass { static var timesCalled = 0 func foo() -> Int { Myclass.timesCalled += 1 return Myclass.timesCalled } } 表示“未设置标志”(例如pattern="^[^'\\"]*" ),那么为什么要在枚举中使用它?我可以声明没有它的枚举吗?

我尝试编写一个没有0的枚举,并且编译成功。

1 个答案:

答案 0 :(得分:5)

这是一个强烈的建议,而不是常规。遵循 rule 建议的充分理由:

  • 一致性。这是Microsoft自.NET第1天以来发布的recommendations的一部分,其后是您在框架和第三方代码中几乎可以找到的所有枚举。

  • 这意味着default(YourEnum)的枚举中定义了一个值。

  • 这意味着YourEnum variable = 0(唯一的Implicit enum conversion)在您的枚举中定义了一个值。

导致不遵守规则:

  • 没有任何编译器警告或错误强制执行

  • ...

是的,可以,但是我强烈建议您不要这样做。

与基础数字类型的其他值不同,您可以获取0显式强制转换(如上面的项目符号所示)。您将会遇到这些值,因此您 都需要编写处理该0的代码。给它起个名字。给它 the 推荐名称。

(当然,我还建议在所有与枚举相关的代码中都详尽无遗,并具有处理所有超出范围的值的明智方法,但非0值只能通过显式强制转换获得)