C# 언어에서 데이터를 처리할 때 기본 자료형을 넘어 복잡한 구조를 표현해야 하는 경우가 많습니다. 이럴 때 사용되는 것이 바로 열거형(enum)입니다.
열거형은 특정 값 집합을 가지는 변수를 표현하기 위해 설계된 사용자 정의 자료형으로, 값 형식(Value Type)에 해당합니다. 각 멤버는 논리적으로 연결된 이름이 붙은 정수 상수로 구성됩니다.
열거형 정의 시 다음 구문을 사용합니다:
[접근제어어] enum 열거형명 {
멤버1, 멤버2, ...
}
예를 들어 주간 요일을 표현하는 열거형은 다음과 같이 정의할 수 있습니다:
public enum WeekDay {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
열거형 사용 예시:
WeekDay today = WeekDay.MONDAY;
if (today == WeekDay.SATURDAY || today == WeekDay.SUNDAY) {
Console.WriteLine("휴무일");
} else {
Console.WriteLine("근무일");
}
열거형과 정수 간 변환은 명시적 형변환을 통해 이루어집니다:
WeekDay today = WeekDay.MONDAY;
int value = (int)today; // 1 반환
today = (WeekDay)5; // FRIDAY 반환
today++; // SATURDAY로 증가
열거형 멤버의 정수값을 직접 지정할 수 있습니다:
public enum DayOfWeek {
SUNDAY = 6, MONDAY, TUESDAY, WEDNESDAY = 2, THURSDAY, FRIDAY, SATURDAY
}
문자열과 열거형 간 변환은 Enum.Parse 메서드를 사용합니다:
Console.WriteLine("오늘은? : ");
string input = Console.ReadLine();
WeekDay today = (WeekDay)Enum.Parse(typeof(WeekDay), input);
WeekDay tomorrow;
if (today == WeekDay.SATURDAY) {
tomorrow = WeekDay.SUNDAY;
} else {
tomorrow = today + 1;
}
Console.WriteLine("내일은: " + tomorrow);
using System;
namespace EnumExample {
public enum WeekDay {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Program {
static void Main(string[] args) {
WeekDay today = WeekDay.MONDAY;
if (today == WeekDay.SATURDAY || today == WeekDay.SUNDAY) {
Console.WriteLine("휴무일");
} else {
Console.WriteLine("근무일");
}
int value = (int)today;
Console.WriteLine($"현재 요일 코드: {value}");
today = (WeekDay)5;
Console.WriteLine($"5번 코드는: {today}");
today++;
Console.WriteLine($"증가 후 요일: {today}");
}
}
}
using System;
namespace EnumParseExample {
public enum DayOfWeek {
SUNDAY = 6, MONDAY, TUESDAY, WEDNESDAY = 2, THURSDAY, FRIDAY, SATURDAY
}
class Program {
static void Main(string[] args) {
Console.WriteLine("오늘은? : ");
string input = Console.ReadLine();
DayOfWeek today = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), input);
DayOfWeek tomorrow;
if (today == DayOfWeek.SATURDAY) {
tomorrow = DayOfWeek.SUNDAY;
} else {
tomorrow = today + 1;
}
Console.WriteLine($"내일은: {tomorrow}");
}
}
}