Feedback

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

Veröffentlicht von am 06.11.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.
GFU-Schulungen  [Anzeige]

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

/// <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!