Section 22.7: 예상치 못한 값으로 변경될 수도 있는 Enum
Enum 은 기반이 되는 숫자형 데이터 타입으로 상호 변환이 될 수 있기에, 그 값이 Enum 타입이 정의되었던 값 범위에서 벗어나는 경우가 생길 수 있다.
아래에 정의된 Enum 타입인 DaysOfWeek
는 7개의 값에 대해서만 선언이 되어 있지만, 실제적으로 Enum 변수는 어떠한 int
값이라도 가질 수가 있다.
public enum DaysOfWeek
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
}
DaysOfWeek d = (DaysOfWeek)31;
Console.WriteLine(d); // 31 이 출력된다
DaysOFWeek s = DaysOfWeek.Sunday;
s++; // 에러가 발생되지 않는다
현재로써는 Enum 으로 하여금 이러한 동작을 막을 수 있도록 선언하는 방법이 존재하지 않는다.
그러나, 선언되지 않은 Enum 값을 Enum.IsDefined
메소드를 통해 감지해 낼 수는 있다. 예를 들어,
DaysOfWeek d = (DaysOfWeek)31;
Console.WriteLine(Enum.IsDefined(typeof(DaysOfWeek),d)); // False 를 출력한다
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
22.9: Enum 값에 부가적인 세부 설명을 추가하기 (0) | 2021.06.22 |
---|---|
22.8: Enum 의 기본값 (0) | 2021.06.22 |
22.6: Enum 을 문자열에서 변환하거나 문자열로 변환하기 (0) | 2021.06.21 |
22.5: enum 변수에 플래그 값을 추가하거나 제거하기 (0) | 2021.06.18 |
22.4: 비트 논리 연산 (bitwise logic) 을 통해 플래그 스타일의 enum 값 검사하기 (0) | 2021.06.18 |