본문 바로가기
C#/C# 강의 정리

C# 열거형 (Enum)

by 민트코코넛 2020. 12. 29.
728x90
반응형

§ 열거형 Enum §

◈ 사용하는 목적 

  1. 일반적인 숫자(상수)보다 의미있는 단어로 표현하기 위하여 사용.

  2. 타인을 배려할 수 있는 프로그래밍.

  3. 가독성 상승

 

- Enum을 사용하지 않고, switch case 사용할 때의 형태 :

class MyClass
{
    static void Main(string[] args)
    {
        Order(2, 3);
    }
    static void Order(int item, int cnt)
    {
        switch (item)
        {
            case 1:
                Console.WriteLine("Coffee " + cnt + "잔");
                break;
            case 2:
                Console.WriteLine("Green Tea " + cnt + "잔");
                break;
            case 3:
                Console.WriteLine("Ice " + cnt + "잔");
                break;
            case 4:
                Console.WriteLine("soup " + cnt + "잔");
                break;
            default:
                break;
        }
    }
}

▲ 위의 코드를 Enum을 사용하여 정리하기

class MyClass
{
    [Flags]         
    // Flags 지정 : enum의 index를 bit로 변환, 연산
    // nor로 멤버를 포함시켜두고, 멤버가 있는지 없는지 찾아보는 것
    public enum Item    // Index number 자동 지정
    {
        //Coffee = 1,       // 0000 0001
        //Tea,              // 0000 0010
        //Ice,              // 0000 0011    
        //Soup              // 0000 0100

        Coffee = 1,         // 0000 0001
        Tea = 2,            // 0000 0010
        Ice = 4,            // 0000 0100    상위 2개를 bit연산한 결과값
        Soup = 8            // 0000 1000    상위 2개를 bit연산한 결과값
    }
    static void Main(string[] args)
    {
        //    Order(Item.Coffee, 3);
        Item i = Item.Coffee | Item.Tea;    // 커피와 차를 비트연산으로 i에 입력
                 // 0000 0001    0000 0010
                 // 0000 0011 = i 의 값
        if ((i & Item.Ice) != 0)
        {                                   // 0000 0011
                                            // 0000 0001
                                            // 0000 0001 = if의 결과값
            Console.WriteLine();
        }
        //if (i.HasFlag(Item.Coffee))       // Flags와 동일한 기능
        //    Console.WriteLine(  );
    }
    static void Order(Item item, int cnt)
    {
        switch (item)
        {
            case Item.Coffee:
                Console.WriteLine("Coffee " + cnt);
                break;
            case Item.Tea:
                Console.WriteLine("Green Tea " + cnt);
                break;
            case Item.Ice:
                Console.WriteLine("Ice " + cnt);
                break;
            case Item.Soup:
                Console.WriteLine("soup " + cnt);
                break;
        }
    }
}

- public enum Item 의미 :

  1. public : 누구나 접근할 수 있도록 접근제한자를 풀어주겠다.

  2. enum : 열거형 모음집. 나열해놓으면, 알아서 순서를 붙여주겠다.

  3. item : 모음집의 이름

- 일반적인 Enum : 내부 인덱스가 1단위로 증가한다.

- [Flags] : Enum을 Bit연산 형식으로 전환시키는 명령어. 내부 Index에 nor 연산을 추가한다.

- Enum의 내부 변수(index)처리 : 메인 함수 또는 외부 함수에서 switch case를 사용하거나 if를 사용해서, 각 인덱스별 대응 출력 내용을 처리하도록 한다.

728x90

'C# > C# 강의 정리' 카테고리의 다른 글

C# yield문  (0) 2020.12.29
C# 매개 변수 ref, out, method overloading  (0) 2020.12.27
C# 제어문  (0) 2020.12.27
C# 배열  (0) 2020.12.27
C# 함수  (0) 2020.12.27