1
使用CustomObject實例化我的通用優先級隊列時出現以下錯誤。當我使用整數實例化時,它運行良好。任何人都可以幫我弄清楚這個問題。沒有隱含的引用轉換錯誤
的誤差出現在導線:
PQueue<CustomObject> pq = new PQueue<CustomObject>();
錯誤CS0311: '在通用類型或方法
Heap.PQueue<T>'. There is no implicit reference conversion from
Heap.CustomObject' 的類型Heap.CustomObject' cannot be used as type parameter
噸至 `System.IComparable」(CS0311)(堆)
原諒我的無知。實現'IComparable'和'IComparable'有什麼區別? –
Nemo
2012-01-30 04:45:40
這是一個公平的問題:-) IComparable和IComparable不是一回事。編譯器將爲泛型版本創建一個完全不同的類型,這就是我們的強類型。如果您查看IComparable方法,您會看到它使用'object'類型進行操作。而通用版本直接與'CustomObject'一起工作。 –
2012-01-30 04:48:07
另一方面,沒有理由不能實現IComparable的通用和非通用版本。 – 2012-01-30 04:48:50