1
10
C始终允许将文本0隐式转换为任何枚举值。改变的是规则如何应用于其他常量表达式。它被设置为更加一致,并允许计算结果为0的任何常量表达式隐式转换为枚举。 您给出的示例在所有版本的C中产生相同的行为。 以下是更改行为的示例(直接从 linked documentation )
Visual C 2005输出: 0 => A(Enum E) (int) E.Zero => A(object) Visual C 2008输出: 0 => A(Enum E) (int) E.Zero => A(Enum E) |
2
4
我想这是因为0被认为是枚举的“默认值”。 C(C 2.0中引入了默认关键字)
输出:
|
3
2
从1.0版开始就允许这样做。它是枚举的默认值。
|
4
0
“枚举元素的默认基础类型为int。默认情况下,第一个枚举器的值为0,并且每个后续枚举器的值增加1。”—这是从 MSDN notes for 1.1 framework 所以一直都是这样。 |
5
0
正如其他人提到的,0是默认枚举。试着把枚举想象成如下(以更明确的方式):
由于您在给定枚举的值中不是显式的,C将自动为其指定默认值。如果您不想这样做,那么您必须明确定义给定枚举的值。 |
Tooleh · 只有第一行上的按钮在表中起作用 7 年前 |
Ahmad · 如何使用C#在unity中避免列表中的重复值 7 年前 |
IPS · 如何知道类型结构属性的偏移值? 7 年前 |
Shakeel Hussain Mir · 阻止刷新锚点标记单击 7 年前 |
Nag Arjun Reddy · 如何在循环中使用集合 7 年前 |