기술공부/언어

[C#] 라이브러리 만들어보기 - enum(열거형)

봉두두 2022. 4. 26. 02:24
728x90

 

요즘 인프런(Inflearn)에서 [C# 중급 강좌] 라이브러리 만들기 강의를 듣고있다.

몇 강의 안되는데, 좋은 정보를 많이 담고있는 것 같아서 굉장히 유용하다. 아래는 강의 정보.

 

 

[무료] [C# 중급 강좌] 라이브러리 만들기 - 인프런 | 강의

라이브러리를 구축하는 것은 프로그래머로서 재산을 축적하는 것과 같다고 생각합니다. 미국 캘리포니아 에서 프로그래머로 활동중이신 Alongside Y 님이 알려주는 C# 강좌 입니다., - 강의 소개 |

www.inflearn.com

 

오늘은 강의 중간에 알게된 키워드 enum(열거형) 에 대해서 정리해보려고 한다.

처음 알게된 개념이기도 하고, 사용법도 내게는 신박했기 때문!

 

 

 


 

enum(열거형)이란?

enum은 열거형 상수(constant)를 표현하기 위한 것으로, 기본 정수 숫자 형식의 명명된 상수 집합에 의해 정의되는 값 형식이다. 열거형을 정의하려면 enum 키워드를 정의하고 enum의 이름을 지정하면 된다.

예로서 Season이라는 집합을 생성하자면 아래와 같이 정의할 수 있을 것이다.

 

public enum Season {
      Spring
      Summer
      Autumn
      Winter
}

 

각 계절에 대한 정보는 아래와 같은 방식으로 불러올 수 있다.

Season.Summer

 

이를 Console.WriteLine 으로 출력하면 Summer가 출력되는 신기한 현상을 목격할 수 있다. 이게 어떻게 가능한가 하면..

 

 

열거형을 활용하면 상수 숫자들을 보다 의미있는 단어들로 표현할 수 있어서 프로그램을 읽기 쉽게 해준다고 한다. (여기에서 Boxing, Unboxing 개념이 포함되는 것 같은데, 관련 개념은 다음에 보다 더 자세히 다루어보려고 한다.)

 

아래는 enum에 대한 특징이다.

  • enum의 각 요소는 별도의 지정이 없이는 첫번째 요소가 0, 두번째 요소가 1, 세번째 요소가 2 ... 와 같이 1씩 증가된 값을 할당받게 된다. 이는 Default로 정의되는 값이며 개발자가 각 요소별로 의미있는 번호를 지정해 줄 수도 있다.
  • enum문은 Class 내부, 혹은 Namespace 내부에서만 선언될 수 있다. Method 내부에서나 혹은 Property 내부에서는 선언될 수 없다.
  • enum 타입은 숫자형 타입과 호환이 가능하다. enum 타입 변수를 int로 캐스팅할 수 있다. (그럼 enum의 숫자값을 얻는다.)  

 

 

아래는 enum의 활용 예시 일부이다.

// enum 선언
enum City
{
    Seoul,   // 0
    Daejun,  // 1
    Busan = 5,  // 5
    Jeju = 10   // 10
}

static void Main(string[] args)
{
    // enum 타입 변수 myCity 선언
    City myCity;
    
    // myCity에 City.Seoul값을 대입
    myCity = City.Seoul;

    if (myCity == City.Seoul) // enum값 비교
    {
        Console.WriteLine("Welcome to Seoul");
    }
}

 

다음번에는 enum의 Flag 개념과 Boxing&UnBoxing 에 대해서 좀 더 알아봐야겠다.

 

 

 

Reference

728x90
728x90