HashSet<T> add - Objektvergleich
-
Hallo Leute,
ich habe folgendes Problem:
Ich nutze ein HashSet<T>.Als Typ T habe ich ein Interface IExample angegeben. Dieses Interface beinhaltet wiederrum das Interface IEquatable<IExample>.
Meine Klasse, welche IExample implementiert, enthält folgende Implementierung:
public bool Equals(IExample other) { if (this.Name.Equals(other.Name)) return true; else return false; }
Leider kann ich in das HashSet trotzdem zwei Elemente mit gleichem Namen aufnehmen, obwohl es eine Menge ist.
Welches Interface muss ich denn implementieren, damit das HashSet einen richtigen Vergleich macht???
Ich habe nun auch mal Testweise IEqualityComparer<IExample> und IComparable<IExample> implementiert, aber auch das hilft nicht.
Die Vergleichmethoden werden beim "add" nicht vom HashSet aufgerufen.
Ich bin nun langsam etwas ratlos.Vielen Dank für Hilfe
c#_frager
-
Was sticht einem bei dem Namen HashSet<T> wohl als erstes ins Auge
Probier mal GetHashCode zu überschreiben
Edit: Aber bitte mach das mit IEqualityComparer<T>
-
Besser ist ich schreib es nochmal hier hin:
Schreib einen eigenen IEqualityComparer<IExample> und übergibt den einfach an das HashSet im Ctor.