Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Исключения в C# в if и try catch

druziseeee Ученик (100), на голосовании 3 недели назад
Почему при написании прописной буквы в блоке if бросает в исключение, а при написании прописной буквы в try catch не бросает в исключение?

enum letters : byte
{
a = 1,
b,
c,
d,
e,
f,
g
}
static void Main()
{
letters lt;

string str1 = Console.ReadLine();

if (!Enum.IsDefined(typeof(letters), str1))
throw new Exception("Error!!!");
else
lt = (letters)Enum.Parse(typeof(letters), str1, ignoreCase: true);

Console.WriteLine(lt);

try
{
string str = Console.ReadLine();
lt = (letters)Enum.Parse(typeof(letters), str, ignoreCase: true);
Console.WriteLine(lt);
}
catch (Exception)
{
throw new Exception("Error!!!");
}
}
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (456586) 1 месяц назад
Потому что твое перечисление не содержит строки. Объекты, не реализующие IEquatable, сравниваются по адресам, логично думать, что у твоей строки адрес будет другим, нежели у объектов в перечислении.
Вообще непонятно, зачем ты лезешь в эти дебри, близкие к рефлексии...
druziseeeeУченик (100) 1 месяц назад
Это про if я так понял, а почему в try catch при написании Заглавных букв проект компилируется в норме?
Похожие вопросы