什么是枚举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 } 

否则,所需要的只是对命令的粗心重构,而且你有一个完全不同的默认值。