1
CustomObjectを使用して汎用優先キューをインスタンス化するときに、次のエラーが発生します。整数でインスタンス化するとうまくいきます。誰も私が問題を理解するのを助けることができますか?暗黙の参照変換エラーなし
エラーは、ライン上に表示されている:
PQueue<CustomObject> pq = new PQueue<CustomObject>();
エラーCS0311: `System.IComparable」(CS0311)に 'ジェネリック型またはメソッド
Heap.PQueue<T>'. There is no implicit reference conversion from
Heap.CustomObjectの' タイプHeap.CustomObject' cannot be used as type parameter
T(ヒープ)
私の無知を許してください。 'IComparable 'と' IComparable'の実装の違いは何ですか? –
Nemo
それは公正な質問です:-) IComparableはIComparableと同じものではありません。コンパイラはジェネリック版とはまったく異なる型を作成しますが、それは強く型付けされます。 IComparableメソッドを見ると、オブジェクト 'type'で動作することがわかります。ジェネリック版は 'CustomObject'で直接動作します。 –
もう1つの点は、IComparableの汎用バージョンと非汎用バージョンの両方を実装できない理由はありません。 –