2010-08-31 13 views
0

J'ai un HashSet avec son propre EqualityComparer, mais je me demande si un simple compte des deux ensembles est utilisé avant de vérifier chaque élément?HashSet l'égalité C#

Je pensais que je serais capable de répondre moi-même dans Reflector mais je ne pouvais pas trouver d'override sur Equals.

Cheers,
Berryl

EDIT ==========

Comme Hans a noté, il fait le comparaison des deux ensembles que je suis intéressé, dans le cadre d'une dérogation de Equals dans une classe qui a un HashSet en tant que propriété?

+1

Pouvez-vous poster votre code? La question semble être si vous essayez de comparer deux instances HashSet ou plus l'une avec l'autre plutôt que d'utiliser 'IEqualityComparer <>' pour évaluer ce que contient déjà un HashSet donné. –

+0

@Anthony. J'essaie de comparer deux ensembles comme indiqué dans l'édition de mon message. Je suppose que la meilleure façon de le faire serait de vérifier le compte et ensuite les éléments, bien que la vérification de l'élément puisse être coûteuse. Bravo – Berryl

Répondre

3

Vous le mélangez. Implémenter votre propre IEqualityComparer <> est utile pour comparer les éléments que vous avez mis dans le HashSet. La propriété Count ne sera utile que si vous souhaitez comparer les jeux . Deux choses très différentes. Il n'y a pas d'implémentation par défaut de Equals(). La méthode HashSet.SetEquals() vérifie d'abord les propriétés Count, si possible.

+0

parfait, c'est ce que je cherchais. À votre santé – Berryl