我有以下代码:
aVariable = int.Parse(Console.ReadLine());
我遇到的一个问题是我找不到任何支持材料来帮助验证用户输入,例如,如果用户按下了字母a,这将简单地杀死程序。
我该怎么办?我在哪里可以找到一个体面的教程?
答案 0 :(得分:5)
而不是使用Parse
方法而是使用TryParse
。
int age;
bool isValidInt = int.TryParse(Console.ReadLine(), out age);
答案 1 :(得分:3)
你可以使用TryParse ..只需谷歌这个方法。或者您可以捕获异常以防止程序崩溃
答案 2 :(得分:2)
当无法解析字符串时,int.Parse抛出FormatException。您可以捕获此异常并处理它,例如显示错误消息。
另一种方法是使用TryParse:
int number = 0;
bool result = Int32.TryParse(value, out number);
if (result)
{
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
答案 3 :(得分:2)
验证用户输入在控制台应用程序中与在Winforms应用程序中的用户输入没有区别。它与在ASP.NET应用程序中验证用户输入非常相似,只是您没有很好的验证控件。
如果您来自ASP.NET背景,请查看人们如何使用CustomValidators - 注意代码隐藏并忽略客户端验证。
此外,您可以像在ASP.NET应用程序中一样轻松地在Console应用程序中使用RegularExpressions。
可能没有专门向控制台应用程序提及验证的原因是输入验证是对输入的验证。这些方法几乎无处不在。与ASP.NET相比,唯一的区别是存在自定义控件,可以帮助您完成。
答案 4 :(得分:1)
改为使用Int32.TryParse
并测试成功投射。
Int32 val;
if (Int32.TryParse(userInput, out val))
{
// val is now the user input as an integer
}
else
{
// bad user input
}