2010-09-05 5 views
3

J'écris un test pour ma bibliothèque écrite en C#. Et je veux tester si deux listes sont identiques si et seulement si elles ont les mêmes éléments (ne nécessitent pas d'éléments dans le même ordre). J'essaye de convertir la liste en hashset et vérifie si les deux hashset sont identiques. Mais le résultat de course n'est pas ce que j'attendais.Implémentation interne de .NET HashSet contient une méthode?

Quelqu'un pourrait-il expliquer comment fonctionne la méthode hashset? Est-ce qu'il compare deux objets par la méthode getHashCode des objets ou égale à la méthode? Merci!

Répondre

4

Il utilise IEqualityComparer <> que vous avez transmis au constructeur HashSet. Si vous n'en avez pas passé, il utilise EqualityComparer <> .Default. Qui, si le type d'élément n'implémente pas IEquatable <> utilise les méthodes Equals et GetHashCode du type.

Je suppose que votre liste contient des objets qui ne remplacent pas ces méthodes. Utilisez l'argument constructeur IEqualityComparer pour corriger.

Questions connexes