매개 변수로 int 배열을받는 웹 서비스 메서드에서 작업하고 메서드 내에서 열의 값을 열거 형 값으로 변환하여 저장했습니다. enum 목록. 그러나 열거 형에없는 값이 전달되면 문제없이 열거 형 목록에 추가됩니다. 아니 InvalidCastException
, 아무것도. 내가 그것을 실행하면C# 열거 형 배열에서 잘못된 값을 받음
static class Program
{
static void Main(string[] args)
{
List<TestValues> values = new List<TestValues>() {
TestValues.Value1,
TestValues.Value2,
(TestValues)15
};
foreach (var val in values)
Console.WriteLine(val);
Console.Read();
}
enum TestValues
{
Value1 = 2,
Value2 = 4,
Value3 = 8
}
}
, 출력은 다음과 같습니다 : I는 다음과 같습니다 테스트 프로젝트 만든
내 웹 서비스에 대한Value1
Value2
15
, 내가 유효성 검사를 구현하는 것을, 그래서 이것은 hapen 않습니다 조금도. 하지만 ... 이상 하네! 런타임에서 InvalidCastException
또는 ArgumentOutOfRangeException
또는 유사한 것을 던져서는 안됩니까? 열거 형 목록 (int 값이 아님)을 얻었으므로 값을 열거 형 값으로 제한해야합니다 (열거 형).
내가 누락 된 항목이 있습니까? 이것은 .NET 버그, C# 버그인가요? 아니면 열거 형을 모르는 뭔가입니까?
+1 – Tigran
읽기이 하나 [왜 잘못된 열거 값으로하는 int 캐스팅하는 예외를 throw하지 않습니다?] [1] [1] : http://stackoverflow.com/ 질문/6413804/왜 캐스팅 int - 투 - 잘못된 - 열거 - 값 - 예외를 throw하지 않습니다 – vinayvasyani