반응형
1
2
3
4
5
6
7
8
9
10
[Flags]
public enum MonsterType
{
    None = 0,
    Human = 1 << 0,
    Flyer = 1 << 1,
    Machine = 1 << 2,
    Fish = 1 << 3,
    All = int.MaxValue
};
cs



먼저 [Flags] 기능 은

이를 이용하면 여러 속성을 선택하는 것이 가능합니다.
 코드는 열거형의 예시로 정리한것입니다.




다음은 Flag 어트리뷰트 된 enum이 여러 속성을 선택할수 있게 연산하는 예입니다.


연산을 하게 되면 . 열거 값을 유지하면서 열거 값을 결합 할 수 있습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[Flags]
public enum MonsterType
{
    None = 0,
    Human = 1 << 0,
    Flyer = 1 << 1,
    Machine = 1 << 2,
    Fish = 1 << 3,
    All = int.MaxValue
};
 
 
MonsterType MyType = MonsterType.Human | MonsterType.Flyer ;
 
//값이 존재하는지 확인:
if((MyType & MonsterType.Human ) != 0
 
//특정 값을 추가:
MyType |= MonsterType.Machine ;
 
//특정 값을 제거:
MyType &= ~MonsterType.Machine ;
 
//특정 값을 반전(1은 0으로, 0은 1로):
MyType ^= MonsterType.Contract;
 
//모든 값 삭제:
MyType = MonsterType.None;
 
//모든 값 설정:
MyType = MonsterType.All;
 
//특정 값을 제외하고 모두 설정:
MyType = MonsterType.All ^ MonsterType.Human ^ MonsterType.Machine ;
 
 
cs


반응형

+ Recent posts