.NET 4.x Реально ли сделать обобщенный ввод - C#
Формулировка задачи:
Если вкратце, то мне надоело писать зацикленный ввод с проверками на корректность(требуют в универе), писать отдельную функцию для каждого типа - явно не вариант. Попытался сделать обобщенную функцию, но напоролся на ограниченность шарповских обобщений. Хотелось бы получить нечто вроде такого:
using System;
class Program
{
static void Main()
{
int x = prompt<int>("Введите целое число : ");
}
static T prompt<T>(string str) where T : int, uint, double, float, decimal, short, ushort, long, ulong
{
label:
try
{
Console.Write(str);
decimal res = decimal.Parse(Console.ReadLine());
return (T)res; //compile error
}
catch
{
goto label;
}
}
}Решение задачи: «.NET 4.x Реально ли сделать обобщенный ввод»
textual
Листинг программы
static void Main()
{
int x = Prompt<int>("Введите целое число : ");
double d = Prompt<double>("Ololo^ ");
}
static T Prompt<T>(string str) where T : struct
{
label:
try
{
Console.Write(str);
var value = Console.ReadLine();
return (T)Convert.ChangeType(value, typeof(T)); ;
}
catch
{
goto label;
}
}