我想创建一个适用于所有 IComparable 类型的接口。例如
public interface SortAlgorithm<T> where T : System.IComparable<T>
{
List<T> Sort(List<T> input);
}
而且我希望它的实现者也是通用的,并且具有我在接口中提供的相同规范。就像下面的例子
public class InsertionSort<T> : SortAlgorithm<T>
这是我这样做的目的。我希望我的所有排序算法都适用于实现 IComparable 接口的所有类型。并且想在接口中提供一次 T 是 IComparable 的子类的规范。但是当我这样做时,我收到以下错误。
错误 1 类型“T”不能用作泛型类型或方法“Algorithms.SortingAlgorithm.SortAlgorithm”中的类型参数“T”。没有从“T”到“System.IComparable”的装箱转换或类型参数转换。
我不明白这是为什么。我可以实现一个通用接口并使其实现类也通用,但是在接口中给出规范时我不能做同样的事情(其中 T:System.IComparable)