2012-01-30 2 views
11

일반 힙 정렬 알고리즘을 작성하려고합니다. 다음과 같은 오류가 발생합니다. 그 이유는 무엇일까요?중첩 된 일반 함수를 작성하는 방법

T 유형이 일반 유형 또는 방법 Heap.MainClass.MaxHeapify<T>(T[], int, int)에서 입력 파라미터 T로서 사용될 수 없다. 에 T로부터 권투 또는 유형 매개 변수 변환은 없습니다 System.IComparable<T> (CS0314) (힙 정렬) 당신은 T뿐만 아니라 HeapSort 기능에 IComparable<T>를 구현해야합니다 같은 제네릭 제약 조건 지정해야

답변

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> 
관련 문제