본문 바로가기
C#/etc.

[C#] 열거형 Enum

by 스누누피 2024. 12. 16.

열거형 Enum

열거형은 서로 관련 있는 상수들의 집합을 정의한 것 이다. 숫자에 특정한 명칭을 붙여주어 의미를 쉽게 이해할 수 있게 하는 용도로 사용된다. 예를 들어 프로그램에서 사과, 바나나, 오렌지의 세 과일을 사용하고 싶은데 각각 0, 1, 2라는 숫자를 부여한다면 나중에 1이 무엇을 의미하는지 이해하기 어려울 수 있다. 

// 0 == apple, 1 == banana, 2 == orange
int[] fruit = { 0, 1, 2 };

 

이럴 때 enum을 사용하면 보기 편한 코드를 작성할 수 있다.

enum Fruit
{
    apple, 	// 0
    banana, 	// 1
    orange	// 2
}

enum 사용법

enum은 기본적으로 위에 Fruit 예시 처럼 enum 이름 { } 형태로 중괄호 안에 열거하고 싶은 내용들을 나열해서 적어주면 된다. 그러면 첫번째 부터 자동으로 0, 1, 2 .. 순으로 상수가 지정된다.

 

enum Fruit
{
    apple, 	// 0
    banana, 	// 1
    orange	// 2
}

 

만약 0, 1, 2 .. 순이 아니라 다른 상수를 지정하고 싶다면 각각 원하는 수를 지정할 수 있다.

enum Fruit
{
    apple = 10,
    banana = 100,
    orange = 1000
}

 

하나의 값만 지정해둬도 그 다음 상수는 자동으로 +1 이된다.

enum Fruit
{
    apple = 10,
    banana,	// 11
    orange	// 12
}

 


enum 활용법

enum Fruit
{
    apple = 10,
    banana = 100,
    orange = 1000
}
Console.Write(Fruit.apple); // apple

 

enum을 선언하고 해당 값을 불러오면 상수가 아닌 enum의 이름이 나온다. 이를 상수로 사용하고 싶다면 int 속성으로 형변환 해주면 된다.

Console.Write((int)Fruit.apple); // 10

 


switch - case 문, enum 자동 완성

enum은 switch - case 문에서 강력한데, 상수가 많아지면 일일히 입력하기 번거롭기때문에 자동 완성을 지원한다.

※ Visual Studio 2019를 사용하였습니다.

 

enum Fruit
{
    apple = 10,
    banana,
    orange 
}
Fruit a = Fruit.apple;

enum Fruit를 선언하고 a에 Fruit.apple을 담아주었다.

 

이제 switch - case문을 사용해 a 담긴 상수가 무엇인지 알아보겠다.

switch

위 처럼 switch 만 입력한 상태에서 tab키를 누르면

switch (switch_on)
{
    default:
}

이렇게 스위치문이 자동 완성 되는데 'switch_on'을 제거하고 비교를 원하는 변수를 넣어주고 enter키를 누르면

switch (a)
{
    case Fruit.apple:
        break;
    case Fruit.banana:
        break;
    case Fruit.orange:
        break;
    default:
        break;
}

이렇게 enum Fruit에 있는 상수를 자동으로 case로 만들어준다.

Fruit a = Fruit.apple;

string fruit = "";
switch (a)
{
    case Fruit.apple:
        fruit = "사과";
        break;
    case Fruit.banana:
        fruit = "바나나";
        break;
    case Fruit.orange:
        fruit = "오렌지";
        break;
}

Console.WriteLine($"a는 {fruit} 입니다."); // a는 사과 입니다.

 


참고 자료

초보자를 위한 C# 200제 2판 | 강병익

[C#] 열거형(Enum) | https://sam0308.tistory.com/66

[2017.08.21] 12. 왜 Enum을 사용할까? | https://heepie.me/32

'C# > etc.' 카테고리의 다른 글

[C#] as, is 키워드  (0) 2024.12.12
[C#] 연산자 오버로딩 (Operator Overloading)  (1) 2024.12.11
[C#] ? 문법 (question mark)  (1) 2024.11.28