답변:
열거의 멤버가 값을 나타내는 것은 무엇이든 0
입니다. 구체적으로, 설명서에서 :
의 기본값
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'
또는에 해당하지 않는 한 여전히 0입니다. 문자 코드 0에 해당하는 NUL 문자 default(char)
이므로 가능성이 매우 낮습니다.default(char)
DefaultValue
속성 을 사용하면 System.ComponentModel.DefaultValue(MyEnum.Blah)
동작을 수정할 수 default(MyEnum)
있지만 여전히 0을 산출 한다고 가정 enum
했습니다. 기본값 주위에 추상화를 만들 수있는 방법이 있습니까?
열거 형의 값 순서에 의존하고 첫 번째 값이 항상 기본값이라고 가정하는 것이 매우 위험하다고 생각합니다. 기본값 보호에 관심이있는 경우이 방법이 좋습니다.
enum E
{
Foo = 0, Bar, Baz, Quux
}
그렇지 않으면 주문의 부주의 한 리 팩터 만 있으면 완전히 다른 기본값을 갖게됩니다.
Foo
후 Bar
모두 Foo
와 Bar
0의 값을가집니다 및 E.Foo == E.Bar
반환합니다 true
. 너무 어리 석고 반 직관적이지만 사실입니다 :(