我正在研究一个Web服务方法,它将接收一个int数组作为参数,然后在方法内部,我将数组中的值转换为枚举值,并将它们存储在一个枚举列表。但是,如果传入的值不在枚举中,则将其添加到枚举列表中而不会出现问题。没有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
}
}
当我运行它时,输出为:
Value1
Value2
15
对于我的web服务,我将实现一个验证,所以这不会hapen在所有。但是......这很奇怪!运行时不应该抛出一个InvalidCastException
或ArgumentOutOfRangeException
或类似的东西?由于我得到了枚举列表(而不是int值),我希望值限制为enum的值(这是枚举的用途)。
我错过了什么吗?这是一个.NET错误,C#错误还是有我不知道与枚举?
+1混日子的问题 – Tigran
阅读本之一: [为什么铸造INT无效的枚举值不抛出异常?] [1] [1]:http://stackoverflow.com/问题/ 6413804/why-does-casting-int-to-invalid-enum-value-not-throw-exception – vinayvasyani