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

C# 它是否需要在位标志枚举类型中包含“None=0”?,c#,enums,C#,Enums,从中,赋值给元素的值0表示“未设置任何标志”(例如None=0),那么我为什么要在枚举中使用它呢?我可以声明没有枚举的枚举吗 我尝试在没有None=0的情况下编写枚举,编译成功。这是一个强烈的建议,而不是规则。遵循规则建议的充分理由: 一致性。它是微软从.NET的第一天开始发布的一部分,紧随其后的是框架和第三方代码中的几乎所有枚举 这意味着default(YourEnum)在枚举中定义了一个值 这意味着YourEnum variable=0(唯一)在枚举中定义了一个值 不遵守规则的原因:

从中,赋值给元素的值
0
表示“未设置任何标志”(例如
None=0
),那么我为什么要在枚举中使用它呢?我可以声明没有枚举的枚举吗


我尝试在没有
None=0的情况下编写枚举,编译成功。

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

  • 一致性。它是微软从.NET的第一天开始发布的一部分,紧随其后的是框架和第三方代码中的几乎所有枚举

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

  • 这意味着
    YourEnum variable=0
    (唯一)在枚举中定义了一个值

不遵守规则的原因:

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

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

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


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

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

  • 一致性。它是微软从.NET的第一天开始发布的一部分,紧随其后的是框架和第三方代码中的几乎所有枚举

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

  • 这意味着
    YourEnum variable=0
    (唯一)在枚举中定义了一个值

不遵守规则的原因:

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

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

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


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

您可以不使用
(特别是如果您可以保证至少设置一个标志);但是为了更好的可读性,您最好添加它。您可以不使用
None
(尤其是在您可以保证至少设置一个标志的情况下);但为了更好的可读性,您最好添加它。