У меня есть следующий метод
int coerce(int val, int min=0, int max = 10)
{
if (val < min)
return min;
if (val > max)
return max;
return val;
}
А теперь я должен сделать это для типов байтов, чисел с плавающей запятой, двойных и других чисел c типов.
Как все, что мы знаем, создание многочисленных аналогичных методов для этих типов очень неэффективно.
Поэтому я хочу превратить его в обобщенный c метод.
Ниже приведен тот, который я пытался сделать .
T coerce<T>(T val, T min=(T)0, T max=(T)10) where T:IComparable
{
... same as the above ...
}
Я знаю, что код не запускается, и поэтому я прошу об этом.
То, что я в настоящее время путаю, это две вещи.
Q1) Как я могу сравнить типы T? - VS предупреждает об операторе '<' и '>'. Я пытался использовать «где T: IComparable», но это не решило мою проблему.
Q2) Как я могу установить значения по умолчанию для аргумента типа generi c? - Я пытался использовать '(T) 0' и '(T) 10' для этого. Но в любом случае это был плохой выбор.
Возможно, это простой вопрос, но я не смог найти ответ от Google.
Не могли бы вы сделать мне одолжение?