Int를 잘못된 Enum 값으로 캐스팅해도 예외가 발생하지 않는 이유
C#에서 enum은 기본적으로 명명된 값 집합을 매핑하는 숫자 유형입니다. 정수 상수로. 열거형의 흥미로운 측면은 정의된 범위를 벗어나는 값을 포함하여 모든 정수 값을 허용하는 능력입니다.
다음과 같은 열거형을 만나면 다음과 같습니다.
enum Beer { Bud = 10, Stella = 20, Unknown }
다음과 같은 캐스팅을 기대할 수 있습니다. 10, 20이 아니거나 Beer 유형에 대해 알 수 없는 정수는 예외를 발생시킵니다. 그러나 이는 사실이 아니다. 잘못된 정수를 Beer 유형으로 캐스팅하면 해당 정수 값이 enum 변수에 할당됩니다.
다음 코드를 고려하세요.
int i = 50; var b = (Beer) i; Console.WriteLine(b.ToString());
이 코드를 실행하면 " 콘솔에 50인치. b 변수에는 정수 값 50이 할당되는데, 이는 Beer에 대한 유효한 열거형 값이 아닙니다. 그러나 캐스트는 예외를 발생시키지 않습니다.
이 동작은 .NET Framework 작성자의 디자인 결정에서 비롯됩니다. 열거형은 int, short 또는 byte와 같은 다른 값 유형으로 지원됩니다. 결과적으로 기본 값 유형에 유효한 모든 값을 허용할 수 있습니다.
이 동작은 일부 시나리오에서는 편리할 수 있지만 이를 인식하지 못하는 경우 예기치 않은 결과가 발생할 수도 있습니다.
기본 동작을 넘어서
열거형 값을 더 엄격하게 적용해야 하는 상황에는 다음이 있습니다. 정의된 열거형 값만 사용하는지 확인하고 적용하는 데 사용할 수 있는 유틸리티 및 확장입니다. 이러한 도구를 사용하면 잠재적인 오류를 방지하고 열거형 변수가 의도한 값만 보유하도록 할 수 있습니다.
위 내용은 C#에서 잘못된 정수를 열거형으로 캐스팅해도 예외가 발생하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!