试图防止c#中出现异常(方法';TryParse';没有重载;
本文关键字:方法 TryParse 重载 异常 | 更新日期: 2023-09-27 18:20:30
我目前正在为c#控制台应用程序制作一个简单的菜单。。当键入字母而不是数字时,我正在努力防止出现异常。如有任何帮助或指导,我们将不胜感激。感谢
userSelection = Int32.TryParse(Console.ReadLine());
switch(userSelection)
{
case 1:
readFile();
validAnswer = true;
break;
case 2:
decryption();
validAnswer = true;
break;
case 3:
validAnswer = true;
Environment.Exit(0);
break;
default:
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Your selection is invalid. Please try again.");
Console.ResetColor();
break;
}
}while (!validAnswer);
}
userSelection = Int32.TryParse(Console.ReadLine());
应为:
bool isNumber = Int32.TryParse(Console.ReadLine(), out userSelection);
TryParse接受两个参数,第一个是要转换的字符串,第二个是将转换结果(需要标记为out
)放在哪里,如果转换成功,它将返回一个布尔值。
为了让你的开关工作,你可以做这样的事情:
bool isNumber = Int32.TryParse(Console.ReadLine(), out userSelection);
if (!isNumber)
userSelection = -1;
这将使您的switch
变为default
,并表示输入的数字无效。
您可以将其分配给一个bool变量,该变量将指示操作是否成功。
int userSelection = -1;
bool res = Int32.TryParse(Console.ReadLine(), out userSelection);
if (res == false)
{
// String is not a number.
}
else
{
//proceed
}