【发布时间】:2011-08-25 18:00:41
【问题描述】:
我正在研究一个 Web 服务方法,该方法将接收一个整数数组作为参数,然后在该方法内部,我将数组中的值转换为枚举值,并将它们存储在一个枚举列表中。但是,当传递不在枚举中的值时,它会毫无问题地添加到枚举列表中。没有InvalidCastException,什么都没有。我做了一个如下所示的测试项目:
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 服务,我将实施验证,因此这将永远不会发生。但是……这很奇怪!运行时不应该抛出InvalidCastException 或ArgumentOutOfRangeException 或类似的东西吗?由于我得到了一个枚举列表(而不是 int 值),因此我希望将值限制为枚举的值(这就是枚举的用途)。
我错过了什么吗?这是 .NET 错误、C# 错误还是我对枚举不了解的地方?
【问题讨论】:
-
阅读这篇文章:[为什么将 int 转换为无效的枚举值不会抛出异常?][1] [1]:stackoverflow.com/questions/6413804/…