Я работал над методом веб-службы, который получит массив параметров ints в качестве параметра, а затем внутри метода я преобразовал значения в массиве в значения enum и сохранил их в списке перечислений. Однако, когда значение, не входящее в перечисление, передается, оно добавляется в список перечислений без проблем. Нет 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
Для моего веб-сервиса я буду выполнять проверку, так что это никогда не произойдет. Но... это странно! Должно ли время выполнения бросать InvalidCastException
или ArgumentOutOfRangeException
или что-то подобное? Поскольку у меня есть список перечислений (а не значений int), я хочу, чтобы значения были ограничены значениями перечисления (для чего используется перечисление).
Я что-то упустил? Это ошибка .NET, ошибка С# или есть что-то, чего я не знаю с перечислениями?