是否需要在位标志枚举类型中包含"无= 0"?

Mes*_*ssi 0 c# enums

官方文档中,赋值0给元素意味着"没有设置标志"(例如None = 0),那么我为什么要在枚举中使用它呢?没有它我可以声明一个枚举吗?

我试着写一个没有的枚举None = 0,编译成功了.

Dam*_*ver 5

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

  • 一致性.这是微软自.NET第1天以来发布的建议的一部分,后面几乎是你在框架和第三方代码中找到的所有枚举.

  • 它表示default(YourEnum)在枚举中定义了一个值.

  • 这意味着YourEnum variable = 0(唯一的隐式枚举转换)具有在枚举中定义的值.

不遵守规则的理由:

  • 它不会被任何编译器警告或错误强制执行

  • ...

所以,是的,你可以,但我强烈建议不要这样做.

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

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