Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有隐式引用转换错误_C# - Fatal编程技术网

C# 没有隐式引用转换错误

C# 没有隐式引用转换错误,c#,C#,当使用CustomObject实例化我的通用优先级队列时,我遇到以下错误。当我用integer实例化时,它工作得很好。有人能帮我解决这个问题吗 错误出现在第行: PQueue<CustomObject> pq = new PQueue<CustomObject>(); PQueue pq=新PQueue(); 错误CS0311:类型Heap.CustomObject'不能用作类型 泛型类型或方法Heap.PQueue'中的参数T'。有 从Heap.CustomObje

当使用CustomObject实例化我的通用优先级队列时,我遇到以下错误。当我用integer实例化时,它工作得很好。有人能帮我解决这个问题吗

错误出现在第行:

PQueue<CustomObject> pq = new PQueue<CustomObject>();
PQueue pq=新PQueue();
错误CS0311:类型
Heap.CustomObject'不能用作类型
泛型类型或方法
Heap.PQueue'中的参数
T'。有 从
Heap.CustomObject'到 `System.IComparable'(CS0311)(堆)


您的通用约束要求
IComparable
,但您的
CustomObject
仅实现
IComparable
。您需要实现
IComparable

您的通用约束要求
IComparable
,但您的
CustomObject
仅实现
IComparable
。你需要实现
IComparable

原谅我的无知。实现
IComparable
IComparable
之间有什么区别?这是一个公平的问题:-)IComparable和IComparable不是一回事。编译器将为泛型版本创建一个完全不同的类型,这就是强类型。如果查看IComparable方法,您将看到它使用类型“object”进行操作。虽然通用版本直接与“CustomObject”一起工作。还有一点,没有理由不能同时实现IComparable的通用和非通用版本。如果您只需要这些,也可以这样做。IComparable只提供了一个强类型方法。因此,与其使用
public int CompareTo(object obj)
,不如使用
public int CompareTo(CustomObject obj)
。这使您无需强制转换,因为编译器不允许任何人传入不同类型的对象。@Nemo除了实现“public int CompareTo(object-other)”,您还可以实现“public int CompareTo(CustomObject-other)”。您的类声明将是公共类“CustomObject:IComparable,IComparable”,请原谅我的无知。实现
IComparable
IComparable
之间有什么区别?这是一个公平的问题:-)IComparable和IComparable不是一回事。编译器将为泛型版本创建一个完全不同的类型,这就是强类型。如果查看IComparable方法,您将看到它使用类型“object”进行操作。虽然通用版本直接与“CustomObject”一起工作。还有一点,没有理由不能同时实现IComparable的通用和非通用版本。如果您只需要这些,也可以这样做。IComparable只提供了一个强类型方法。因此,与其使用
public int CompareTo(object obj)
,不如使用
public int CompareTo(CustomObject obj)
。这使您无需强制转换,因为编译器不允许任何人传入不同类型的对象。@Nemo除了实现“public int CompareTo(object-other)”,您还可以实现“public int CompareTo(CustomObject-other)”。您的类声明将是公共类“CustomObject:IComparable,IComparable”