학습
C# enum(열거형) 사용법
C# enum(열거형) 사용법 — 초급
enum(열거형) 사용법
1. 도입 (왜 배워야 하는가)
C#에서 enum(열거형)은 관련 상수 집합을 정의할 수 있는 강력한 도구입니다. 실무에서는 코드의 가독성을 높이고, 특정 값의 의미를 명확하게 전달하는 데 매우 유용합니다. 예를 들어, 프로그램에서 상태 코드나 옵션을 처리할 때, enum을 사용하면 숫자나 문자열 대신 의미 있는 이름을 사용할 수 있어 코드의 의미를 쉽게 이해할 수 있습니다.
반면, enum을 사용하지 않으면 숫자 값이나 문자열을 직접 사용하는 경우가 많아 코드가 복잡해지고, 실수로 잘못된 값을 사용하기 쉬워집니다. 예를 들어, status = 1이라고 쓸 때, 1이 무엇을 의미하는지 코드만 보고는 알기 어렵습니다. 하지만 enum을 사용하면 status = OrderStatus.Shipped와 같이 명확하게 표현할 수 있습니다.
2. 핵심 개념 설명
enum은 "열거형"의 줄임말로, 특정 값의 집합을 정의하는 데이터 형식입니다. 각 값은 이름을 가지고 있으며, 기본적으로 정수형으로 매핑됩니다. 이를 통해 읽기 쉽고 안전한 코드를 작성할 수 있습니다.
실생활 비유
enum은 마치 메뉴판처럼 생각할 수 있습니다. 메뉴판에는 다양한 음식의 이름이 나와 있고, 각 음식은 고유한 번호를 가집니다. 예를 들어, 피자는 1번, 파스타는 2번, 샐러드는 3번입니다. 사용자는 메뉴판을 보고 음식의 이름을 선택하고, 프로그램은 그에 맞는 숫자를 사용하여 처리합니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| Enum | 열거형으로, 관련 상수 집합을 정의하는 데이터 타입. |
| Enum 값 | Enum에 정의된 각 상수, 기본적으로 정수형으로 매핑됨. |
| Enum 이름 | 각 Enum 값에 대한 명칭. |
3. 기본 코드 예제
다음은 enum을 정의하고 사용하는 기본 예제입니다.
enum DayOfWeek
{
Sunday, // 0
Monday, // 1
Tuesday, // 2
Wednesday, // 3
Thursday, // 4
Friday, // 5
Saturday // 6
}
class Program
{
static void Main(string[] args)
{
DayOfWeek today = DayOfWeek.Wednesday; // 오늘의 요일을 수요일로 설정
Console.WriteLine("오늘은 " + today + "입니다."); // 오늘의 요일을 출력
}
}
실행 결과
오늘은 Wednesday입니다.
코드 한 줄씩 동작 설명
enum DayOfWeek: 요일을 정의한 열거형을 선언합니다.DayOfWeek today = DayOfWeek.Wednesday;: 오늘의 요일을 수요일로 설정합니다.Console.WriteLine(...): 설정한 요일을 출력합니다.
4. 실전 활용 예제
예제 1: 주문 상태 관리
쇼핑몰에서 주문의 상태를 관리할 때 enum을 사용할 수 있습니다.
enum OrderStatus
{
Pending, // 주문 대기 중
Processed,// 처리 중
Shipped, // 배송 중
Delivered // 배달 완료
}
class Order
{
public OrderStatus Status { get; set; }
public Order()
{
Status = OrderStatus.Pending; // 기본 상태는 대기 중
}
}
예제 2: 게임 캐릭터 상태
게임에서 캐릭터의 상태를 표현할 때도 유용합니다.
enum CharacterState
{
Idle, // 대기 상태
Running, // 이동 중
Attacking, // 공격 중
Defending // 방어 중
}
class Character
{
public CharacterState State { get; set; }
public void ChangeState(CharacterState newState)
{
State = newState;
Console.WriteLine("캐릭터 상태가 " + State + "(으)로 변경되었습니다.");
}
}
5. 흔한 실수와 주의사항
실수 1: 잘못된 enum 값 사용
DayOfWeek today = (DayOfWeek)7; // 잘못된 값
DayOfWeek today = DayOfWeek.Sunday; // 올바른 값
실수 2: enum 이름 중복
enum Color
{
Red,
Green
}
enum TrafficLight
{
Red, // 중복된 이름
Yellow,
Green
}
enum TrafficLight
{
RedLight, // 중복 피하기 위해 이름 변경
Yellow,
GreenLight
}