enum HamburgerMenu
{
CheeseBurger=1, // 내부값 0 이었으나 1로 초기화
BulgogiBurger, // 내부값 2
shrimpBurger // 내부값 3
}
HamburgerMenu bgOrder = 1;
이전에는 열거형은 숫자에 별명을 붙이는 것이라고 배웠다.
열거형으로 만들어진 변수에, 직접 숫자를 집어 넣으려 하면 에러가 난다.
열거형에다 숫자를 넣는 방법을 알아보자.
열거형과 형변환
int myInt = 3.14;
// 정수형에 실수를 담을수 없다.
int myInt = (int)3.14f;
// 형변환을 거치면 담을수 있다.
HamburgerMenu bgOrder = (HamburgerMenu)1;
// 열거형에도 형변화를 시도
// "해당 열거형으로 형변환을 해라" 이런식으로 코드 작성
HamburgerMenu bgOrder;
// 햄버거메뉴 속 구성요소들만 담을수 있게 변수 선언
bgOrder = HamburgerMenu.CheeseBurger;
Console.WriteLine(bgOrder);
// 치즈버거 출력
// 이에 상응하는 숫자를 출력하고 싶으면 형변환을 하자.
Console.WriteLine((int)bgOrder);
// 숫자 1 출력
IsDefined ( 범위를 벗어나는 값에 대한 대처 )
범위를 벗어나는 값을 입력하면 의도치 않은 결과가 출력된다.
열거형 내에 특정 요소가 있는지 검사할 필요가 있는데
IsDefined 함수를 사용하자.
개념
- Enum.IsDefined() 는 특정 값이 해당 enum 안에 실제로 정의되어 있는지 확인하는 메서드이다.
- 즉, 잘못된 값 ( 존재하지 않는 값 ) 을 걸러낼 수 있다.
Enum.IsDefined(typeof(HamburgerMenu), 7);
// 7에 대한 정의가 없으므로 반환값이 bool 이 된다
- 조건문과 묶어서 활용하면 열거형도 더 안전하게 사용가능
enum Location
{
Village,
HuntingPlace,
Shop
}
class Program
{
static void Main()
{
int input = 2; // 사용자가 "2" 입력했다고 가정
// enum 으로 변환
Location loc = (Location)input;
// 유효한 값인지 확인
if (Enum.IsDefined(typeof(Location), loc))
{
Console.WriteLine($"{loc} 로 이동합니다.");
}
else
{
Console.WriteLine("잘못된 장소입니다.");
}
}
}
- input - 2 → Shop 로 이동합니다.
- input - 5 → 잘못된 장소입니다.
장점
- enum은 내부적으로 단순히 int 값이기 때문에, 없는 숫자도 들어갈수 있다.
- 그래서 IsDefined로 안전하게 체크해줘야 한다.
참고 자료
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/enum
'⭐C Sharp > 08. 열거형' 카테고리의 다른 글
| Enum 반환형 (0) | 2025.09.12 |
|---|---|
| 열거형 ( Enumerate ) (0) | 2025.09.08 |