2010-04-16 5 views

답변

4

논리적으로 None 유효한 선택 (당신의 열거의 의미에 따라 다름) 수 -> 스위치의 경우 별도의 지점이 수 - None을 가진 관련하여 (틀림없이 항상 None 옵션 sence을하게되지 않음)

을 옵션 a Nullable<Mode> 변수 : 일관성을 위해 None으로 갈 것입니다 : 유효한 옵션이 3 개이고 None이 그 중 하나라면 왜 다르게 취급합니까?

그리고 None 옵션을 선택하거나 선택하지 않으면 항상 enum 값을 0 (기본 옵션)으로 매핑해야합니다. Hans Kesting이 제공 한 link은 0으로 매핑 된 값을 갖는 것이 좋습니다.

다른 값 유형과 마찬가지로 기본값이 초기화되지 않은 열거 형은 0입니다. 플래그가 아닌 특성이있는 열거 형은 값이 0 인 구성원을 정의하여 기본값이 열거 형의 유효한 값이되도록해야합니다. 적절한 경우, 회원 이름을 '없음'으로 지정하십시오. 그렇지 않으면 가장 일반적으로 사용되는 구성원에 0을 지정하십시오. 첫 번째 열거 형 멤버의 값이 선언에 설정되어 있지 않으면 기본값은 0입니다.

+0

답변을 유용하다고 표시했습니다. –

11

아무 것도 [Flags] enums에 중요하지 않으며 값이 0이어야합니다. 그렇지 않으면 ... 의심 스럽습니다. Nullable<Mode>도 충분합니다. 그러나 None은 직렬화 또는 ORM 레이어에 대해 요구 될 수 있습니다 (예상되는 문자열/int 값 등으로 매핑 될 수 있음). 아니면 API를 단순하게 만들 수도 있습니다.

4

공식적인 이유로 코드 분석 규칙 (http://msdn.microsoft.com/en-us/library/ms182149(VS.100).aspx 참조)이 필요합니다.

+0

(다시 플래그가 아닌 enum) pah ... "0"이 이미 내 열거 형의 유효한 대/소문자가 아닌 경우 하나도 갖고 있지 않습니다. 타당한 값을 확인해 보겠습니다. ** 정의되지 않은 다른 모든 ** 값을 확인해야합니다. 기본값이 0이므로 다른 값을 사용해야하는 이유는 무엇입니까? 1124521은 * just * (아마도) 유효하지 않습니다. –

관련 문제