본문 바로가기

C#

[C#] 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

};


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

Column MyColumns = Column.Customer | Column.Contract;


2) 값이 존재하는지 확인:

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

 


3) 특정 값을 추가: 

MyColumns |= Column.Tech;



4) 특정 값을 제거:

MyColumns &= ~Column.Tech;



5) 특정 값을 반전(1은 0으로, 0은 1로):

MyColumns ^= Column.Contract;



6) 모든 값 삭제:

MyColumns = Column.None;



7) 모든 값 설정:

MyColumns = Column.All;



8) 특정 값을 제외하고 모두 설정:

MyColumns = Column.All ^ Column.Tech ^ Column.Status

'C#' 카테고리의 다른 글

[C#] Naming 규칙  (0) 2018.07.16
[C#] MemberwiseClone() 함수  (0) 2018.07.16
[C#] Delegate  (0) 2018.07.16
[C#] Boxing / UnBoxing / as  (0) 2018.07.11
[C#] 서로 다른 3가지 Timer  (0) 2018.07.11