Je suis face à un sacré probleme, j'espere que vous pourrez m'aider...
J'ai une classe MaClasse pour laquelle j'ai surchargé les operateurs == et != sans quoi le == par defaut retourne toujours false vu que certaines propriétés sont des references... bref...
Je l'ai fait, et ca fonctionnait tres bien.
Afin d'inverser les dépendances et que tout mon programme ne dépende pas de MaClasse, j'ai extrait une interface IMaClasse.
Probleme : on ne peut pas définir de surcharge d'operateur dans une interface.
Du coup , lorsque je fais une comparaison :
la ligne obj1 == obj2 utilise l'operateur par defaut qui retourne toujours false.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 IMaclasse obj1 = blablabla IMaclasse obj2 = blablabla if(obj1 == obj2) gnagnagna
J'ai partiellement contourné le probleme, en rajoutant à mon interface :
puis dans ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 interface IMaclasse { ... bool Equals(object obj); }
mais du coup, mon code fonctionne que si je passe par Equals, pas si j'utilise ==.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class MaClasse { public override bool Equals(object obj) { return this == (MaClasse)obj; } }
Auriez vous une solution pour que mon obj1 == obj2 passe bien par mon operateur surchargé?
Un train grand merci d'avance pour votre aide.
Partager