如何编写嵌套的泛型函数

本文关键字:泛型 函数 嵌套 何编写 | 更新日期: 2023-09-27 18:21:55

我正在尝试编写一个通用的堆排序算法。我得到以下错误。原因可能是什么?

类型T不能用作泛型类型中的类型参数T或方法CCD_ 3。没有装箱或类型参数从T转换为System.IComparable<T>(CS0314)(堆分拣)

如何编写嵌套的泛型函数

您需要指定与T必须在HeapSort函数上实现IComparable<T>相同的通用约束:

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

您在MaxHeapify方法上指定了此约束,为了调用它,T必须满足此条件。

MaxHeapify<T>()方法有一个where T : IComparable的通用约束,但您的HeapSort<T>()方法没有,因此编译器无法解析HeapSort方法对MaxHeaify的调用。您还应该在HeapSort<T>()方法中添加一个where : IComparable的通用约束。

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