О, 2 вещи: 1) Это консольное приложение. 2) Я знаю, что это на датском языке, но это на самом деле не имеет значения, это просто пример запроса на ввод. Текст и переменные не имеют значения.Лучший способ проверки ввода строки в C#?
Хорошо, рассмотрите этот простой ввод: Это может быть любой вопрос ввода на самом деле.
Console.WriteLine("Hvad er dit kundenummer: (Kun hele tal tilladt)");
string inputKnr = Console.ReadLine();
kundenummer = Convert.ToInt16(inputKnr);
Теперь, что, если клиент называет что-то неправильно? Например, письмо. Попробуйте & catch будет следить за тем, чтобы приложение не сломалось, но это не то решение, которое я хочу. Я хочу сказать, что вы сделали это неправильно, попробуйте еще раз. Довольно классический правый?
Но каков наилучший способ решить это решение? Я подумал об этом:
bool fangetKundenummer = true;
while (fangetKundenummer)
{
Console.WriteLine("Hvad er dit kundenummer: (Kun hele tal tilladt)");
string inputKnr = Console.ReadLine();
try
{
kundenummer = Convert.ToInt16(inputKnr);
fangetKundenummer = false;
}
catch
{
Console.WriteLine("Fejl. Prøv igen");
}
}
Но это не похоже на правильный способ сделать это.
Кроме того, просто для того, чтобы упомянуть об этом, небольшое приложение, с которым я играю, имеет 4 ввода вопросов подряд. Это означало бы 4 раза эту неприятную while() петлю.
Вы также можете написать функцию. Что-то вроде этого (нет причин, чтобы сделать это правильно, его просто для иллюстрации концепции):
static void verifyInput()
{
try
{
Console.WriteLine("question");
input = Console.ReadLine();
kundenummer = Convert.ToInt16(input)
}
catch
{
Console.WriteLine("Wrong. Do it over");
verifyInput(); //start the function all over
}
}
Но вы должны были бы написать функцию для каждого входа вопрос, несмотря на то, что они могли бы спросить точно для того же! (что означает, что, возможно, все запрашивают целое число, но с другим вопросом и переменной).
Это не похоже на лучшее решение while().
У кого-нибудь есть умная идея?
Не совсем «умная идея», но правильный ответ. –