2 Stimmen

Wie würde ich zwei Listen (Of <CustomClass>) in VB vergleichen?

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X