Ich arbeite daran, den Gleichheitsoperator zu implementieren =
für eine benutzerdefinierte Klasse von mir. Die Klasse hat eine Eigenschaft, Value
die selbst eine List(Of OtherClass)
, wobei OtherClass
ist eine weitere benutzerdefinierte Klasse in meinem Projekt.
Ich habe bereits die IComparer
, IComparable
, IEqualityComparer
und IEquatable
Schnittstellen, die Betreiber =
, <>
, bool
y not
und außer Kraft gesetzt Equals
y GetHashCode
for OtherClass
. Dies sollte mir alle Werkzeuge an die Hand geben, die ich brauche, um diese Objekte zu vergleichen, und verschiedene Tests, bei denen zwei einzelne Instanzen dieser Objekte verglichen werden, sind bisher erfolgreich.
Ich bin mir jedoch nicht sicher, wie ich das angehen soll, wenn sie sich in einer List
. Die Reihenfolge der Liste ist mir egal. Gegeben:
Dim x As New List(Of OtherClass) From
{New OtherClass("foo"),
New OtherClass("bar"),
New OtherClass("baz")}
Dim y As New List(Of OtherClass) From
{New OtherClass("baz"),
New OtherClass("foo"),
New OtherClass("bar")}
Puis (x = y).ToString
sollte ausdrucken True
.
Ich muss die gleiche (nicht eindeutige) Menge von Objekten in dieser Liste vergleichen. Die Liste sollte keine Duplikate von OtherClass
aber ich werde herausfinden müssen, wie man das später als eine Ausnahme hinzufügen. Ich bin nicht an der Verwendung von LINQ interessiert. Es sieht nett aus, aber in den wenigen Beispielen, mit denen ich gespielt habe, fügt einen Leistungsoverhead hinzu, der mich stört. Schleifen sind hässlich, aber sie sind schnell :)
Eine direkte Code-Antwort ist in Ordnung, aber ich würde gerne auch die Logik verstehen, die für einen solchen Vergleich erforderlich ist. Ich werde diese Logik wahrscheinlich mehr als nur ein paar Mal auf dem Weg implementieren müssen.