什么是枚举variables的默认值
一个枚举variables,任何人都知道,如果总是默认第一个元素?
无论枚举成员如何表示值0
。 具体来说,从文档 :
enum E
的缺省值是expression式(E)0
产生的值。
作为一个例子,采取以下枚举:
enum E { Foo, Bar, Baz, Quux }
不重写默认值,打印default(E)
返回Foo
因为它是第一个发生的元素。
但是,枚举的0
不一定是第一个成员。 例如,如果你这样做:
enum F { // Give each element a custom value Foo = 1, Bar = 2, Baz = 3, Quux = 0 }
打印default(F)
会给你一个Quux
,而不是Foo
。
如果枚举G
没有元素对应于0
:
enum G { Foo = 1, Bar = 2, Baz = 3, Quux = 4 }
default(G)
字面上返回0
,尽pipe它的types仍然是G
(如上面的文档所引用的,对给定的枚举types进行强制转换)。
我认为依赖enum中的值的顺序是相当危险的,并假定第一个总是默认值。 如果您关心保护默认值,这将是一个很好的做法。
enum E { Foo = 0, Bar, Baz, Quux }
否则,所需要的只是对命令的粗心重构,而且你有一个完全不同的默认值。