[C#] C#에서 이넘(Enum)사용법과 설명 완벽 정리 (C# 예시 코드 포함)
개요
enum (열거형)
은 특정한 상수 집합을 정의하여 코드의 가독성을 높이고, 오류를 줄이는 데 사용되는 자료형입니다. 쉽게 말해, 특정한 값들만 가질 수 있는 변수를 미리 정의해 놓는 것이라고 생각할 수 있습니다.
예를 들어, 요일을 나타내는 변수를 만들 때, “월요일”, “화요일”, “수요일” 등의 문자열 대신 “Monday”, “Tuesday”, “Wednesday”와 같은 명확한 이름의 상수를 사용하여 표현할 수 있습니다.
특징
- 기본형: enum은 기본적으로 int형으로 취급됩니다. 즉, 각 enum 멤버는 정수 값과 연결되어 있습니다. 첫 번째 멤버는 0부터 시작하여 순차적으로 증가합니다.
- 사용자 정의 값: 각 멤버에 직접 정수 값을 할당할 수 있습니다.
- Flags 속성: 비트 연산을 사용하여 여러 값을 표현할 수 있도록 합니다.
- switch 문: enum 값을 switch 문에서 사용하여 다양한 경우의 수를 처리할 수 있습니다.
장점
- 코드 가독성 향상: 숫자 대신 의미 있는 이름을 사용하여 코드를 더욱 명확하게 만들 수 있습니다.
- 오류 감소: 허용되지 않는 값이 할당되는 것을 방지하여 프로그램의 안정성을 높입니다.
- 타입 안전성: enum 값은 해당 enum 타입으로만 비교할 수 있어 타입 관련 오류를 줄일 수 있습니다.
- 리팩토링 용이: enum 값의 이름을 변경하더라도 코드 전반에 걸쳐 일관되게 변경할 수 있습니다.
활용 예시
- 상태 표현: 프로그램의 상태를 나타내는 데 사용합니다. (예: 게임 캐릭터의 상태, 네트워크 연결 상태)
- 옵션 설정: 다양한 옵션을 나타내는 데 사용합니다. (예: 폰트 스타일, 색상)
- 에러 코드: 에러 발생 시 원인을 나타내는 코드를 저장하는 데 사용합니다
주의사항
- enum 값 비교 시 주의: enum 값은 == 연산자로 비교해야 합니다. 숫자 값으로 비교하면 예상치 못한 결과가 발생할 수 있습니다.
- Flags 속성 사용 시 주의: 비트 연산에 대한 이해가 필요합니다.
- enum 멤버 이름: 의미 있는 이름을 사용하여 코드의 가독성을 높여야 합니다.
예제
public enum DayOfWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
// enum 사용 예시
DayOfWeek today = DayOfWeek.Wednesday;
if (today == DayOfWeek.Sunday)
{
Console.WriteLine("오늘은 주말입니다.");
}
[Switch문에서 사용]
public enum Color
{
Red,
Green,
Blue
}
public void PrintColor(Color color)
{
switch (color)
{
case Color.Red:
Console.WriteLine("빨간색");
break;
case Color.Green:
Console.WriteLine("초록색");
break;
case Color.Blue:
Console.WriteLine("파란색");
break;
default:
Console.WriteLine("알 수 없는 색깔");
break;
}
}
[메서드 파라미터로 사용]
public void DrawShape(Shape shape)
{
switch (shape)
{
case Shape.Circle:
// 원 그리기
break;
case Shape.Rectangle:
// 사각형 그리기
break;
case Shape.Triangle:
// 삼각형 그리기
break;
default:
Console.WriteLine("알 수 없는 도형");
break;
}
}
public enum Shape
{
Circle,
Rectangle,
Triangle
}