C#初学者,目前正在使用控制台应用程序。如果我说要求用户输入日期,但他们输入的字符串无法转换为日期时间,我怎样才能确保他们被要求再次尝试?我知道这很容易通过if / else语句,但如果一个应用程序有数百个这样的问题,那么同样数百个if语句只是为了查看数据类型是否正确似乎是不对的。有没有内置的我错过了或者“黑客”来执行此操作?
e.g
Console.WriteLine("What is your birthday");
Datetime bday = Convert.ToDateTime(Console.ReadLine());
用户输入说“dfio”。
答案 0 :(得分:1)
你可以写一个像
这样的函数x
并多次使用。
在您的情况下(public static int GetInt()
{
int X;
String Result = Console.ReadLine();
while(!Int32.TryParse(Result, out X))
{
Console.WriteLine("Not a valid Int, try again!");
Result = Console.ReadLine();
}
return X;
}
),您只需将代码更改为
DateTime
答案 1 :(得分:1)
bool valid = false;
DateTime bday;
while(!valid){
Console.WriteLine("What is your birthday");
string input = Console.ReadLine();
if (DateTime.TryParse(input, out bday))
{
Console.WriteLine("Invalid Date");
valid = true;
}
}
这将循环,直到输入有效的DateTime。
This文档页面将帮助您为解析器提供自定义格式。
这只是这个特定输入的解决方案。
答案 2 :(得分:0)
使用ToString()方法将输入作为字符串。 Datetime bday = Convert.ToDateTime(Console.ReadLine()。ToString());