출처 : http://sjpison.tistory.com/1
다음의 코드는 열거형의 Flag연산을 쉽게 정리해 놓은 것입니다.
[Flags]
public enum Column
{
None = 0,
Priority = 1 << 0,
Customer = 1 << 1,
Contract = 1 << 2,
Description = 1 << 3,
Tech = 1 << 4,
Created = 1 << 5,
Scheduled = 1 << 6,
DueDate = 1 << 7,
Status = 1 << 8,
All = int.MaxValue
};
void test()
{
//[Flags] 속성을 사용하면 아래와 같은 코드가 가능합니다.(두 속성을 하나의 변수에 담는 것):
Column MyColumns = Column.Customer | Column.Contract;
//값이 존재하는지 확인:
if ((MyColumns & Column.Customer) != 0) return;
//특정 값을 추가:
MyColumns |= Column.Tech;
//특정 값을 제거:
MyColumns &= ~Column.Tech;
//특정 값을 반전(1은 0으로, 0은 1로):
MyColumns ^= Column.Contract;
//모든 값 삭제:
MyColumns = Column.None;
//모든 값 설정:
MyColumns = Column.All;
//특정 값을 제외하고 모두 설정:
MyColumns = Column.All ^ Column.Tech ^ Column.Status;
}