Как написать вложенную общую функцию
Я пытаюсь написать общий алгоритм сортировки кучи. Я получаю следующую ошибку. В чем может быть причина?
Тип T
не может использоваться как параметр типа T
в родовом типе или метод Heap.MainClass.MaxHeapify<T>(T[], int, int)
. Здесь нет бокса или преобразования параметров типа из T
в System.IComparable<T>
(CS0314) (HeapSort)
Ответы
Ответ 1
Вам нужно указать одно и то же общее ограничение, которое T должно реализовать IComparable<T>
в функции HeapSort
:
private static void HeapSort<T>(T[] items) where T : IComparable<T>
Вы указали это ограничение на метод MaxHeapify
и для его вызова T должно удовлетворять этому условию.
Ответ 2
Метод MaxHeapify<T>()
имеет общее ограничение where T : IComparable
, но ваш метод HeapSort<T>()
его не имеет, поэтому компилятор не может разрешить вызов метода MaxHeapify из метода HeapSort.
Вы должны добавить общее ограничение where : IComparable
к вашему методу HeapSort<T>()
.
private static void HeapSort<T>(T[] items) where T : IComparable<T>