Komplexe Objekte vergleichen

realpk

Mitglied
Ich habe eine sehr komplexe Klasse.
Davon gibt es 2 Instanzen, diese möchte ich vergleichen, auf "selben Inhalt"
Das Problem scheint zu sein das bei einem "==" immer false zurückgegeben wird.
Die 2 Objekte arbeiten unabhängig. Keine Referenz ;) würde ja nichts bringen.

Ich hoffe jemand hat einen Vorschlag, ausser jeden Typ mit einnander zu vergleichen.

Danke im Vorraus
 
Hallo!

Überschreibe einfach die Methoden Equals und GetHashCode ...
Code:
using System;

namespace Foo
{
	/// <summary>
	/// Zusammenfassung für Class1.
	/// </summary>
	class Foo
	{

		private int value;
		private string data;

		public Foo(int value, string data)
		{
			this.value = value;
			this.data = data;
		}

		/// <summary>
		/// Der Haupteinstiegspunkt für die Anwendung.
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			Foo f0 = new Foo(0,"Hallo");
			Foo f1 = new Foo(0,"Hallo1");

			Console.WriteLine(f0.Equals(f1));
		}

		public override bool Equals(object obj)
		{
			if(!(obj is Foo))
				return false;
			Foo f = (Foo)obj;

			return this.value == f.value && this.data.Equals(f.data);
		}

		public override int GetHashCode()
		{
			return this.value  + this.data.GetHashCode() * 37;
		}


	}
}

gruß Tom
 
Danke, nur leider hilft mir das nicht. Dies ist doch auch ein Vergleich der primitiven Datentypen.

Meine Klasse ist ungefähr so aufgebaut.

Klasse1 hat 3 Properties, Klasse2 - Klasse 4.
Diese haben auch wieder ein paar Klassen als Properties.
Das ganze ist sehr verschachtelt inkl einer klasse die ein Property hat welches von dem eigenen Type ist etc.

Ich hoffe jemand hat mein Problem verstanden und kann mir helfen.
 
Hallo!

sting ist kein primitiver Datentyp .. ;-) Dann musst du eben auch für die "Abhänigen" Klassen die Equals und GetHashCode Methode implementieren...

Gruß Tom
 

Neue Beiträge

Zurück