C# 열거형 enum 사용 방법 case문과 같이 쓰기 예제

C#에는 enum이라는 열거형 타입이 있습니다.

enum 타입에는 정수를 열거형으로 정의할 수 있습니다.

열거형으로 정의를 할 수 있기 때문에 switch-case문과 같이 사용하는 경우도 많습니다.

enum은 어떻게 사용을 하는지 살펴보도록 하겠습니다.

 

enum 사용 방법

enum 오브젝트명 {상수1, 상수2, ・・・};

 

상수명은 영숫자는 물론 한글도 지정할 수 있습니다.

단, 상수명에는 공백을 사용할 수 없습니다.

enum 정의 예제

enum Days {
	Mon,
	Tue,
	Wed,
	Thu,
	Fri,
	Sat,
	Sun
}

 

한글로도 정의할 수 있습니다.

enum Days {
	월요일,
	화요일,
	수요일,
	목요일,
	금요일,
	토요일,
	일요일
}

 

상수의 기본 타입은 int형이지만, 원하는 타입으로 지정할 수도 있습니다.

그리고 초기값도 지정할 수 있습니다.

enum Days : byte{
	Mon = 1,
	Tue,
	Wed,
	Thu,
	Fri,
	Sat,
	Sun
}

 

상수의 타입을 byte로 지정했습니다.

그리고 초기값도 지정했습니다.

위처럼 Mon이라는 상수에 1이라고 지정하는 경우에는 Tue에는 2가, Wed에는 3이라는 값이 정의됩니다.

만약, 상수에 값을 지정하지 않는다면 Mon에는 0, Tue에는 1이 정의됩니다.

즉, 0부터 순서대로 값이 부여됩니다.

 

 

switch문과 사용하기

enum을 switch-case문과 같이 사용해보겠습니다.

enum switch 예제

using System;

namespace Sample
{
	// enum 정의
	enum Days {
		Mon,
		Tue,
		Wed,
		Thu,
		Fri,
		Sat,
		Sun
	}

	class Sample
	{
		static void Main()
		{
			Days day = Days.Wed;

			switch(day) {
				case Days.Mon:
				case Days.Tue:
				case Days.Wed:
				case Days.Thu:
				case Days.Fri:
					Console.WriteLine("평일 입니다.");
					break;
				case Days.Sat:
				case Days.Sun:
					Console.WriteLine("휴일 입니다.");
					break;
				default:
					Console.WriteLine("올바른 값을 입력하세요.");
					break;
			}

			Console.ReadKey();
		}
	}
}

 

결과

평일 입니다.

 

enum 상수명 취득

ToString 메서드를 사용하여 상수명을 문자열로 변환할 수 있습니다.

enum ToString 예제

using System;

namespace Sample
{
	// enum 정의
	enum Days : byte{
		Mon = 1,
		Tue,
		Wed,
		Thu,
		Fri,
		Sat = 11,
		Sun
	}

	class Sample
	{
		static void Main()
		{
			Days day = Days.Wed; 
			string dayName = day.ToString();
			Console.WriteLine(dayName);

			Console.ReadKey();
		}
	}
}

 

결과

Wed

 

enum을 int로 변환

enum을 int형으로 변환하는 방법입니다.

enum을 int형으로 예제

using System;

namespace Sample
{
	// enum 정의
	enum DaysEnum
	{
		Mon = 0,
		Tue = 1,
		Wed = 2
	}

	class Sample
	{
		static void Main()
		{
			// 상수명을 취득
			Console.WriteLine(DaysEnum.Mon);

			// 캐스터를 사용하여 값을 취득
			Console.WriteLine((int)DaysEnum.Mon);

			Console.ReadKey();
		}
	}
}

 

결과

Mon
0

 

캐스터를 사용해서 값을 취득할 수 있습니다.

 

정리

열거형인 enum을 사용하면 비슷한 종류별로 상수를 묶어서 사용할 수도 있고 하여 소스를 보기에도 편하고 코딩할 때에도 어디에 어떠한 값들을 모아서 작성해두었는지 알 수 있기 때문에 사용하는 경우가 많습니다.

알아두면 소스를 깔끔하게 작성할 수 있는 유용한 타입입니다.

댓글