Я преобразовываю числовое значение, которое имеет тип строки в соответствующий 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);
}
}
}