Вообщем я тут разбираюсь с quicksort и вот когда я начал писать я столкнулся с проблемой статической типизации. Алгоритм для int double long и т.д. ничем не отличается но из за разностей типов нужно плодить перегрузки и следовательно идёт огромный дубляж кода.Есть ли какой-то способ избежать этого?
P.S.
dynamic не подходит потому что производительность уходит в небытие.
Если я правильно вас понял, то можно воспользоваться ограничением универсального типа до IComparable, его реализуют все примитивы.
public IEnumerable<T> Sort<T>(IEnumerable<T> collection) where T : IComparable
{
foreach(var item in collection)
{
var result = item.CompareTo(new object()/* <- объект для сравнения */);
// и так далее
}
}
Поправьте если не прав если не прав, но это же не решит проблему для таких элементов нету операций предусмотренных для числовых.И придётся все равно дублировать когда при этом ещё и приводя типы.