2011-02-11 5 views
8

나는 우리가 플래그 속성을 필요로하는 이유가 궁금 다음 열거플래그 속성이 필요합니까?

enum TestType 
{ 
    None = 0x0, 
    Type1 = 0x1, 
    Type2 = 0x2 
} 

를 정의하면 나는 비트 연산을 수행 할 수 있습니다, 또는 플래그 속성없이 발견?

+0

가능한 [Enum Flags Attribute] (http://stackoverflow.com/questions/8447/enum-flags-attribute) – BoltClock

+1

의 복제본 사실 나는 그것이 속는 사람이라고 생각하지 않습니다. 그 dup doesn''t는 * 그것이 왜 필요한지 만진다 *. 모든 예제들이 똑같이 작동합니다. –

+2

@Marc : 흠, 방금 일부 답변을 살펴 봤는데 거기에 포인트가 있습니다. – BoltClock

답변

14

C#을 그들에게 같은 방법 중 하나를 치료하지만, C#을 수있는 유일한 소비자되지 않습니다 :

  • PropertyGrid이/조합
  • XmlSerializer 받아 들일 수 있도록 다르게 렌더링이 플래그에 따라 구분 된 조합을 거부
  • Enum.Parse 마찬가지로 (문자열에서), 그리고 열거의 .ToString()는 표시 또는 값이 그들을 다른 취급 처리하는 다른 코드의 다른
  • 많이 작동합니다 ently

더 중요한 것은 다른 개발자 (및 코드)에게 의도를 표현한 것입니다. 이것은 배타적 값이 아닌 조합으로 처리하기위한 것입니다.

+0

ToString을 언급하는 것이 일반적일까요? –

+0

@ 존 - 완료; 감사 –

1

가끔 enum 값의 비트 조합은 의미가 있습니다 (예 : FileAccess - 읽기, 쓰기, 읽기 + 쓰기). 때로는 (보통) 그렇지 않습니다. 따라서 [Flags]은이 열거 형에서 의미가있는 비트 연산자가 인 메타 데이터 정보를 저장하는 기술적 인 방법입니다. 이 속성의 소비자가 여러 명 있습니다 (예 : ToString).

관련 문제