Я конвертирую числовое значение строкового типа в соответствующее Enum. Пока я тестировал свой код, я обнаружил интересное поведение, которое меня сбило с толку.
Используя приведенный ниже пример кода, может ли кто-нибудь пролить свет на то, почему не генерируется исключение, если / когда переменная «s» имеет значение, не совпадающее с одним из значений Enum? Кроме того, как можно установить для sEnum var значение, которое не существует в определении перечисления Stooge?
class Program
{
enum Stooge
{
Unspecified,
Moe,
Larry,
Curly,
Shemp
}
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Enter a number...");
string s = Console.ReadLine();
Stooge sEnum = (Stooge)(int.Parse(s)); //Why doesn't this line throw if s != 0, 1, 2, 3, or 4?
Console.WriteLine("\r\nYou entered: {0}\r\nEnum String Value: {1}\r\nEnum Int Value: {2}\r\n", s, sEnum.ToString(), (int)sEnum);
}
}
}