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
(尤其是在您可以保证至少设置一个标志的情况下);但为了更好的可读性,您最好添加它。