Как работают обобщения
Почему код не компилируется?
Operator '*' cannot be applied to operands of type 'T' and 'int'.
На каком-то подобном вопросе объясняют, что не каждый тип T имеет перегрузку оператора *. Разве после проверки, что это числовое значение, не должно работать нормально? Какие варианты правильного исправления этого метода, чтобы он работал?
public T SomeMethod<T>(T param)
{
if (typeof(T) == typeof(int) || typeof(T) == typeof(double) || typeof(T) == typeof(float))
{
return param * 2;
}
if (typeof(T) == typeof(string))
{
return $"{param}";
}
return param;
}
Ладно бы первое условие только не работало, почему не работает второе условие, разве не любой тип имеет метод ToString?