Je reçois l'erreur suivante lors de l'utilisation d'un objet CustomObject pour instancier ma file d'attente de priorité générique. Cela fonctionne bien quand j'instancie avec integer. Quelqu'un peut-il m'aider à comprendre le problème.Aucune erreur de conversion de référence implicite
L'erreur apparaît sur la ligne:
PQueue<CustomObject> pq = new PQueue<CustomObject>();
erreur CS0311: Le type
Heap.CustomObject' cannot be used as type parameter
T 'dans le type générique ou méthodeHeap.PQueue<T>'. There is no implicit reference conversion from
Heap.CustomObject' à `System.IComparable » (CS0311) (tas)
Pardonnez mon ignorance. Quelle est la différence entre l'implémentation de 'IComparable' et 'IComparable'. –
Nemo
C'est une bonne question :-) IComparable n'est pas la même chose que IComparable. Le compilateur créera un type complètement différent pour la version générique qui est ce qui sera fortement typé. Si vous regardez la méthode IComparable, vous verrez qu'elle fonctionne avec le type 'object'. Alors que la version générique fonctionne directement avec 'CustomObject'. –
un autre point, il n'y a aucune raison pour que vous ne puissiez pas implémenter les versions génériques et non génériques d'IComparable. –