Answers:
枚举的任何成员代表值0
。具体来说,从文档中:
an的默认值
enum E
是表达式产生的值(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
,尽管其类型保持为G
(如上面的文档所引用,强制转换为给定的枚举类型)。
'\0'
或default(char)
,这是因为极不可能default(char)
是NUL字符对应于字符代码0
DefaultValue
属性(类似-之类的东西)System.ComponentModel.DefaultValue(MyEnum.Blah)
会修改的行为,default(MyEnum)
但仍会产生0。没有办法为enum
默认值附近的对象创建抽象吗?