[Flags]

public enum PriceType

{

    None = 0,

    Gold = 1 << 0,

    Cash = 1 << 1,

    Heart = 1 << 2,

    Free = 1 << 3,

    All = int.MaxValue // int의 Max값을 넣으면 모든 비트가 1이므로 무조건 All이 된다

}

// [Flags] Attribute를 위에 붙여주면 비트연산처럼 사용가능

PriceType e_PriceType = PriceType.Gold | PriceType.Cash;

// Flag 값 확인

if((e_PriceType & PriceType.Gold) != 0)

{

    // Gold Flag값이 들어있으면

}

// Gold Flag 설정

e_PriceType |= PriceType.Gold;

// Gold Flag 제거

e_PriceType &= ~PriceType.Gold;

// Gold Flag 반전 (있으면 제거하고 없으면 설정)

e_PriceType ^= PriceType.Gold;

// Flag 모두 제거

e_PriceType = PriceType.None;

// Flag 모두 설정

e_PriceType = PriceType.All;

// Gold와 Free를 제외하고 모두 설정

e_PriceType = PriceType.All ^ PriceType.Gold ^ PriceType.Free;