Ich versuche, eine eindeutige Liste von Wörtern aus einem Array von Wörtern mit dem folgenden Code zu erhalten:
%Vor%Ich dachte, dies würde das doppelte Vorkommen von "this" beseitigen, aber es gibt eine Liste jedes Wortes in der Phrase zurück.
Kann jemand bitte vorschlagen, wie ich eine eindeutige Liste bekommen kann? Danke
Dave
In Ihrem Beispiel ist jedes Word-Objekt eindeutig , weil es keinen Vergleich gibt, der die Text-Eigenschaft betrachtet.
Es gibt jedoch keinen Grund, ein neues Objekt zu erstellen:
%Vor%Oder einfacher:
%Vor% Sie haben den Code für Ihre Word
-Klasse nicht veröffentlicht, aber ich rate, dass sie Equals
nicht mit einem Wertvergleich implementiert, so dass Sie die Standardimplementierung von Equals
erhalten, die nur die Objektreferenzen überprüft . Beachten Sie, dass Sie, wenn Sie sich entscheiden, Ihre eigene Version von Equals
zu implementieren, auch GetHashCode
korrekt implementieren müssen.
Eine alternative Möglichkeit zur Lösung dieses Problems besteht darin, der Funktion IEqualityComparer
einen Distinct
als Parameter bereitzustellen.
Wie andere bereits angemerkt haben, besteht das Problem wahrscheinlich darin, dass Ihr Word
-Objekt keine strukturelle Gleichheit implementiert (vergleichen Sie den tatsächlichen Inhalt, nicht die Instanzreferenzen). Wenn Sie weiterhin eine Auflistung von Word
-Objekten als Ergebnis erhalten möchten, aber Distinct
für die zugrunde liegenden Zeichenfolgenwerte verwenden möchten, können Sie Folgendes schreiben: