Feedback

C# - Equals für alle DatenTypen (byte[], ....)

Veröffentlicht von am 11/6/2006
(3 Bewertungen)
alle Funktionen besitzen eine .Equals funktion, die jedoch nicht bei allen DatenTypen funktioniert.

Hier gibt es schöne Hilfsfunktion um z.B. auch komplette Arrays mit einer Funktion zu vergleichen.
/// <summary>
/// Gibt zurück ob der Inhalt zweier Elemente übereinstimmt
/// </summary>
/// <param name="a">Element a</param>
/// <param name="b">Element b</param>
/// <returns>True bei erfolg</returns>
public static bool EqualContent(object a,object b)
{
	//Falls beide Leer sind
	if (a == null && b==null)
		//Erfolgreich
		return true;

	//Wenn eins von beiden null ist
	if (a == null || b == null)
		//Nicht gleich
		return false;
	
	//Stream für vergleich öffnen
	System.IO.MemoryStream sA = new System.IO.MemoryStream();
	System.IO.MemoryStream sB = new System.IO.MemoryStream();

	//Binär beide Serialisieren
	System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
	bin.Serialize(sA,a);
	bin.Serialize(sB,b);

	//In Array lesen
	byte[] saB = sA.ToArray();
	byte[] sbB = sB.ToArray();

	//Array vergleichen
	if (saB.Length == sbB.Length)
	{
		for(int i=0;i<saB.Length;i++)
			if (!saB[i].Equals(sbB[i]))
				return false;
	}
	else
	{
		//Länge stimmt schonmal nicht überein
		return false;
	}

	//Jetzt kann es nur noch übereinstimmen ;)
	return true;
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!