docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/enum
열거형 - C# 참조
선택 또는 선택의 조합을 나타내는 C# 열거형에 대해 알아봅니다
docs.microsoft.com
Enumeration types (enum type)은
각 비트마다 enum이 하나씩 들어가게끔 설정하여 bit array를 사용하듯 사용할 수 있다
열거형을 비트 필드 즉, 플래그 집합으로 처리할 수 있음을 나타내기 위해 [Flags]를 적용시킨다
[Flags]를 사용하면 두 속성을 하나의 변수에 담는 것이 가능해진다
[Flags]
public enum Column
{
None = 0,
Up = 1 << 0,
Down = 1 << 1,
Left = 1 << 2,
Right = 1 << 3,
All = int.MaxValue
}
[1] 두 속성을 하나의 변수에 담기
Column checkDirection = Column.Up | Column.Left;
[2] 값 추가
checkDirection |= Column.Down;
[3] 값 제거
checkDirection &= ~Column.Up;
[4] 값 반전 ( 0 -> 1 , 1 -> 0)
checkDirection ^= Column.Left;
[5] 모든 값 삭제
checkDirection = Column.None;
[6] 모든 값 설정
checkDirection = Column.All;
[7] 특정 값을 제외하고 모두 설정
checkDirection = Column.All ^ Column.Up ^ Column.Right;
[8] 값 존재 확인
if((checkDirection & Column.Up) != 0)
[9] 값 존재 확인 (닷넷 4.0이상에서)
if(checkDirection.HasFlag(Column.Up))
값이 0인 플래그는 None으로 사용하자
결과가 항상 0이라 AND 연산 등에서 비트 설정 여부를 확인할 수 있도록 돕는다
'프로그래밍 > 공부' 카테고리의 다른 글
2D 메트로베니아 or 자연스러운 진행형 게임에서의 맵 생성 (0) | 2021.05.06 |
---|---|
왜 구조체는 16바이트가 넘지 않을 때 사용하는 것을 권장할까?? (0) | 2021.05.05 |
어떻게 해야 커플링을 줄일 수 있을까?? (0) | 2021.03.23 |
유니티의 Null Check에 관해 (0) | 2020.11.21 |
객체지향의 사실과 오해_00 (0) | 2020.03.18 |