Недавно я столкнулся с проблемой, что хотел, чтобы функция работала как по удвоениям, так и по целым числам и задавалась вопросом, почему нет общего интерфейса для всех типов номеров (содержащих арифметические операторы и сравнения).
Это сделало бы такие функции записи, как Math.Min
(которые существуют в перегрузках gazillion).
Будет ли введение дополнительного интерфейса нарушением изменения?
Edit: Я думаю об использовании этого, например
public T Add<T>(T a, T b) where T: INumber
{
return a+b;
}
или
public T Range<T>(T x, T min, T max) where T:INumber
{
return Max(x, Min(x, max), min);
}