Проверка на ввод конкретного типа данных
Есть метод проверяющий, чтобы пользователь ввёл число только типа int. Можно ли сделать универсальную функцию на подобие этой, в которую передаётся тип переменной, например в строковом виде ("int", "float", "str" и т.п) и данная функция проверяла на ввод и возвращала указанный тип.
Проблема в том, что не знаю как функция может вернуть универсальный тип данных (int,str,float и т.п), а не только конкретный как в примере ниже.
public static int IntGetInput()
{
try
{
Console.WriteLine("Input int variable...");
int input = int.Parse(Console.ReadLine());
return input;
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
return IntGetInput();
}
}
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
Можно использовать метод Convert.ChangeType.
static T GetInput<T>()
{
Type type = typeof(T);
Console.Write($"Input {type.Name} variable: ");
string? value = Console.ReadLine();
return (T)Convert.ChangeType(value, type);
}
Но он не со всеми типами работает.
Console.WriteLine(GetInput<string>());
Console.WriteLine(GetInput<int>());
Console.WriteLine(GetInput<float>());
Добавьте обработку исключений, где необходимо.