> 백엔드 개발 > C++ > C#에서 잘못된 정수를 열거형으로 캐스팅해도 예외가 발생하지 않는 이유는 무엇입니까?

C#에서 잘못된 정수를 열거형으로 캐스팅해도 예외가 발생하지 않는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-03 01:10:39
원래의
432명이 탐색했습니다.

Why Doesn't Casting an Invalid Integer to an Enum in C# Throw an Exception?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿