2012-01-30 29 views
11

Genel bir Heap Sıralama algoritması yazmaya çalışıyorum. Aşağıdaki hatayı alıyorum. Sebebi ne olabilir?Yuvalanmış genel işlev nasıl yazılır

tip T genel türü veya yöntem Heap.MainClass.MaxHeapify<T>(T[], int, int) tip parametresi T olarak kullanılamaz. için T hiçbir boks veya tip parametresi dönüşüm vardır System.IComparable<T> (CS0314) (Heapsort) Sen T de HeapSort işlevini IComparable<T> uygulamalıdır aynı jenerik kısıtlamayı belirtmeniz gerekir

cevap

10

:

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

Bu kısıtlamayı MaxHeapify yönteminde belirttiniz ve bunu çağırmak için, T bu koşulu karşılamalıdır.

+0

Evet, devam edin. teşekkür ederim! – Nemo

1

MaxHeapify<T>() yöntem where T : IComparable genel bir kısıtlaması vardır ama HeapSort<T>() yöntem buna sahip değildir ve bu yüzden derleyici Heapsort yönteminden MaxHeapify çağrısı çözmek mümkün değildir. where : IComparable genel bir kısıtlaması, HeapSort<T>() yönteminize de eklemelisiniz.

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