Есть ли способ принудительно привести приведение int к перечислению, когда это int не представляет допустимое значение перечисления? - PullRequest
0 голосов
/ 27 октября 2009
enum Answer : int { Yes = 1, No = 2 }
Answer answer = (Answer)100;

Это бросает, но я не хочу этого. Как?

Ответы [ 4 ]

7 голосов
/ 27 октября 2009

Нет , не бросает. Ваша линия типов делает именно то, что вы хотите.

Дополнительно:

перечисления преднамеренно расслаблены, принимая «недопустимые» значения, это необходимо при использовании битовых флагов.

0 голосов
/ 27 октября 2009

Да бросает? Вы уверены, что используете C #? Этот код абсолютно действителен и делает то, что вы хотите, чтобы он делал!

0 голосов
/ 27 октября 2009

Почему вы хотите это сделать? Почему бы просто не использовать int, если вы не используете функции enum?

Тем не менее, код не представляет для меня никакой проблемы:

Answer answer = (Answer)100;
Console.WriteLine(answer); // prints 100
0 голосов
/ 27 октября 2009

Это идет вразрез с концепцией перечислений ... Они существуют, чтобы гарантировать, что опция существует. Если вам нужно 100 различных значений, мой совет - потерять перечисление. Если вам просто нужно «другое значение», вы можете сделать это:

enum Answer : int { Yes = 1, No = 2, OtherValue }
Answer answer = Answer.OtherValue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...