8
votes

Modifier la liste.Contient le comportement

J'ai une liste avec la classe MyOBJ: icomparable . J'ai écrit la méthode comparèteo dans la classe MyOBJ par l'interface icomparable , mais lorsque j'utilise la liste .Contains ( myObjinstance) Il renvoie false quand il devrait être vrai .

Je ne suis pas sûr que je comprends comment je dois procéder pour vous assurer que la liste utilise ma méthode de comparaison personnalisée lorsque vous appelez alors contient la fonction

voici mon implémentation comparèteo: xxx

Remarque La propriété symbole est une chaîne.

Pour clarifier J'ai mis un point d'arrêt cette méthode comparète et cela ne va même même pas là-bas.

Quelqu'un a déjà essayé cela?

Merci.


1 commentaires

Spécifiquement la mise en œuvre de comparète


3 Réponses :


23
votes

Le moyen le plus simple absolu de déterminer si votre méthode comparète est appelée est de définir un point d'arrêt et de frapper F5 pour exécuter votre programme. Mais je crois que list .Contains recherche le IEQUABLE interface pour faire la comparaison.


0 commentaires

2
votes

Avez-vous essayé de remplacer la méthode des égaux?

Liste , selon le réflecteur, utilise EqualalComParrer pour vérifier la confinement et la mise en œuvre par défaut (ObjectAlityComPerRer) utilise des objets égaux pour la plupart des objets normaux.


0 commentaires

5
votes

Selon le Documentation pour Liste .Contains , il utilise votre implémentation de interface interface ou objet.equales , que vous pouvez également remplacer.


0 commentaires