Ssssong += Dev

[C#] Flag연산 본문

개발/공부

[C#] Flag연산

ssong_dev 2022. 9. 14. 17:03

비트 연산은 선언된 값의 합이 다른 멤버의 값과 절대로 겹치지 않는다. 

 

왼쪽 1

오른쪽 2

위 4

아래 8

 

이런식으로 선언한다면 연산의 합이 각 멤버와 겹치지 않으므로 고유한 조합의 계산이 가능하여

한 변수에 여러 옵션을 넣고 빼는 것이 가능하다. enum을 [Flag] 어트리뷰트를 사용하여 선언할 수 있다.

 

[Flags]
public enum Ways
{
	Left = 1,
    Right = 2,
    Up = 4,
    Down = 8
}

 

사용할 때는 비트연산자를 이용한다.

Ways way = Ways.Left | Ways.Right;

 

매번 2곱해서 계산하기 귀찮으면 이렇게 표기도 된다.

[Flags]
public enum Ways
{
	Left = 1 << 0,
    Right = 1 << 1,
    Up = 1 << 2,
    Down = 1 << 3
}

맨 위 코드와 같은 값이다.