Programista, powinien przewidzieć, rownież sytuacje niepożądane. Poleganie na tak zwanej HappyPath zawsze kończy się źle. Nie polecam również rozwiąznia z int.TryParse ponieważ argumenty out to zło i lepiej wgl ich nie stosować. Najprostsze rozwiązanie poniżej. Program tak długo męczy użytkownik dopóki nie wprowadzi poprawnego numeru.
class Program
{
private static readonly char[] _allowedCharacters = new char[10]
{
'0','1','2','3','4','5','6','7','8','9'
};
static void Main(string[] args)
{
int numberFromUser = GetNumberFromUser();
//do something with that number :)
}
private static int GetNumberFromUser()
{
Console.WriteLine("Please Provide Some Number");
var given = Console.ReadLine();
if (IsValidNumber(given))
return int.Parse(given);
Console.WriteLine("Please Provide Valid Number");
return GetNumberFromUser();
}
private static bool IsValidNumber(string given)
{
return
given.All(character => _allowedCharacters.Contains(character));
}
}