2012-01-30 20 views
11

Estoy tratando de escribir un algoritmo genérico de Clasificación de Hep. Obtuve el siguiente error. ¿Cuál podría ser la razón?Cómo escribir la función genérica anidada

El tipo T no se puede utilizar como parámetro de tipo T en el tipo genérico o método Heap.MainClass.MaxHeapify<T>(T[], int, int). No hay ninguna el boxeo o el tipo de parámetro de conversión de T a System.IComparable<T> (CS0314) (HeapSort)

Respuesta

10

Es necesario especificar la misma restricción genérica que T debe aplicar IComparable<T> en la función HeapSort así:

private static void HeapSort<T>(T[] items) where T : IComparable<T> 

Ha especificado esta restricción en el método MaxHeapify y para llamarlo, T debe cumplir esta condición.

+0

Sí, mancha. ¡gracias! – Nemo

1

MaxHeapify<T>() El método tiene una limitación genérica de where T : IComparable pero su método de HeapSort<T>() no lo tiene, por lo que el compilador no es capaz de resolver la llamada al método de MaxHeapify HeapSort. Debe agregar una restricción genérica de where : IComparable a su método HeapSort<T>() también.

private static void HeapSort<T>(T[] items) where T : IComparable<T> 
Cuestiones relacionadas