【问题标题】:How to write nested generic function如何编写嵌套的泛型函数
【发布时间】:2012-01-30 06:48:08
【问题描述】:

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

类型T不能作为泛型类型中的类型参数T 或方法Heap.MainClass.MaxHeapify<T>(T[], int, int)。没有 装箱或类型参数从T 转换为 System.IComparable<T> (CS0314) (堆排序)

【问题讨论】:

    标签: c#


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      MaxHeapify&lt;T&gt;() 方法具有where T : IComparable 的通用约束,但您的HeapSort&lt;T&gt;() 方法没有它,因此编译器无法解析从 HeapSort 方法对 MaxHeapify 的调用。 您还应该将where : IComparable 的通用约束添加到您的HeapSort&lt;T&gt;() 方法中。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-06
        • 2020-06-29
        • 1970-01-01
        • 2013-03-19
        • 1970-01-01
        • 1970-01-01
        • 2018-01-01
        相关资源
        最近更新 更多