2012-01-30 11 views
11

一般的なヒープソートアルゴリズムを記述しようとしています。次のエラーが表示されます。理由は何でしょうか?ネストされたジェネリック関数を書く方法

タイプTはジェネリック型 又は方法Heap.MainClass.MaxHeapify<T>(T[], int, int)タイプパラメータTとして使用することができません。あなたはTが同様HeapSort機能にIComparable<T>を実装する必要があり、同じ一般的な制約を指定する必要がTから への ボクシングや型パラメータ変換System.IComparable<T>(CS0314)(ヒープソート)

答えて

10

はありません。

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

MaxHeapifyメソッドでこの制約を指定しました。これを呼び出すには、Tがこの条件を満たす必要があります。

+0

はい、あります。ありがとうございました! – Nemo

1

MaxHeapify<T>()方法はwhere T : IComparableの一般的な制約がありますが、あなたのHeapSort<T>()方法は、それを持っていない、ので、コンパイラがヒープソート法からMaxHeapifyへの呼び出しを解決することはできません。 HeapSort<T>()メソッドにもwhere : IComparableの汎用制約を追加する必要があります。

private static void HeapSort<T>(T[] items) where T : IComparable<T> 
関連する問題