Modifier le comportement List.Contains
-
21-08-2019 - |
Question
J'ai un avec le List<MyObj>
class MyObj : IComparable
. J'ai écrit la méthode dans la CompareTo
classe par l'MyObj
l'interface IComparable
, mais quand je l'utilise, il retourne List<MyObj>.Contains(myObjInstance)
quand il doit false
être true
.
Je ne sais pas je comprends comment je dois procéder pour vous assurer que l'utilise ma méthode List
de comparaison personnalisée lors de l'appel puis la fonction Contains
.
Voici mon implémentation de compareTo:
#region IComparable Members
public int CompareTo(object obj)
{
MyObj myObj = (MyObj)obj;
return String.Compare(this.Symbol, myObj.Symbol, true);
}
#endregion
Notez la propriété Symbol est une chaîne.
Pour clarifier, j'ai mis un point d'arrêt dans cette méthode compareTo et il ne va même pas là-dedans.
Tout le monde a déjà essayé?
Merci.
Autres conseils
Avez-vous essayé redéfinissant la méthode Equals?
List<T>
, selon réflecteur, EqualityComparer<T>
utilise pour vérifier le confinement et la mise en oeuvre par défaut (ObjectEqualityComparer) utilise Égale pour la plupart des objets normaux.