Почему я не получаю InvalidCastException, когда приведение enum к целому не удается? - PullRequest
8 голосов
/ 17 февраля 2011
public enum Animal
{
    Dog = 1,
    Cat = 2,
    Cow = 3
}

int animalID = 4;
if ((Animal)animalID == Animal.Dog) // does not throw exception

animalID не может быть приведен к Animal.Почему я не получаю InvalidCastException, когда не удается привести enum к целому числу?

Ответы [ 2 ]

11 голосов
/ 17 февраля 2011

Поскольку это не недопустимое приведение.

Значение, которое вы разыгрываете, составляет вне диапазона для перечисления (в данном случае), но оно не является недействительным.

Поскольку разрешенными типами для перечисления являются байты, sbyte, short, ushort, int, uint, long или ulong, приведение целых чисел к перечислению вполне допустимо.

Источник - MSDN

1 голос
/ 17 февраля 2011

Это предполагаемое поведение и может быть довольно полезным.Рассмотрим перечисления, определенные с помощью атрибута [Flag].

btw, это дублирование Преобразование числа вне диапазона в перечисление в C # не приводит к исключению

там может быть больше ответов:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...