본문 바로가기
개발언어/C#

[C#] [Flag] Enum Attribute는 무엇을 의미합니까?

by 창용이랑 2020. 11. 4.
728x90

예시

[Flags]
public enum Options 
{
    None    = 0,
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option4 = 8
}

 

 [Flags] 속성은 열거형이 단일 값이 아닌 가능한 값의 집합을 나타낼 때마다 사용해야 합니다. 

 

이러한 컬렉션은 비트 연산자와 함께 사용되는 경우가 많습니다.

 

예를 들어 다음과 같습니다.

var allowedColors = MyColor.Red | MyColor.Green | MyColor.Blue;

참고 [Flags] 속성은 스스로 이것을 가능하게 하지 않는다 - 단지 그것에 의해 멋진 표현을 허용하는 것이다. .ToString() 메서드

enum Suits 
{
    Spades = 1, 
    Clubs = 2, 
    Diamonds = 4, 
    Hearts = 8 
}

[Flags] 
enum SuitsFlags 
{
    Spades = 1, 
    Clubs = 2, 
    Diamonds = 4, 
    Hearts = 8 
}

...

var str1 = (Suits.Spades | Suits.Diamonds).ToString();
           // "5"
var str2 = (SuitsFlags.Spades | SuitsFlags.Diamonds).ToString();
           // "Spades, Diamonds"