레이블이 비트연산인 게시물을 표시합니다. 모든 게시물 표시
레이블이 비트연산인 게시물을 표시합니다. 모든 게시물 표시

2010년 2월 15일 월요일

enum의 Flag 연산

enum(열거형)에서는 Flag(FlagsAttribute)속성이 있는데, 이를 이용하면 하나의 속성을 선택하는 것이 아니라 여러 속성을 선택하는 것이 가능합니다.
다음의 코드는 열거형의 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,

All = int.MaxValue

};

 

[Flags] 속성을 사용하면 아래와 같은 코드가 가능합니다.(두 속성을 하나의 변수에 담는 것):

Column MyColumns = Column.Customer | Column.Contract;

 

값이 존재하는지 확인:

if((MyColumns & Column.Customer) != 0)

특정 값을 추가:
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;

 

출처 : http://blog.naver.com/sjpison/150034457150