enum은 기본적으로 int를 상속받는다.

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
[Flags]
public enum PollyType : byte {
    /// <summary>
    /// 텍스트 입니다.
    /// <value>(byte)1</value>
    /// </summary>
    [XmlEnum("text")]
    Text = 1,
    /// <summary>
    /// 음성 입니다.
    /// <value>(byte)2</value>
    /// </summary>
    [XmlEnum("voice")]
    Voice = << 1,
    /// <summary>
    /// 영상 입니다.
    /// <value>(byte)4</value>
    /// </summary>
    [XmlEnum("video")]
    Video = << 2,
    /// <summary>
    /// 전체 입니다.
    /// <value>(byte)7</value>
    /// </summary>
    [XmlEnum("all")]
    All = (<< 3- 1
}
cs


제목처럼 기본적으로 int를 상속받으므로, int 이외에는 명시해주어야 한다.

byte의 범위가 0~255 이므로 잘 참고해서 상속할 범위를 정해준다.

그리고 enum 타입이 비트 필드를 갖는다는 것을 표시하기 위해 [Flags]로 명시해준다.


OR 연산자를 이용해서 enum 변수에 다중값 설정

1
2
3
// 1 + 4 = 5
// test = 5
var test = PollyType.Text | PollyType.Video;
cs

AND 연산자를 이용해서 enum 변수가 특정 멤버를 포함하고 있는지 체크

1
2
3
4
5
6
var test = PollyType.Text | PollyType.Video;
 
// PollyType.Text가 포함되어 있다.
if ((test & PollyType.Text) > 0) {
 
}
cs


+ Recent posts