Sobes.tech
Junior — Middle

Wie erfolgt der Vergleich von Referenztypen, wenn keine eigenen Vergleichsmethoden implementiert sind?

sobes.tech KI

Antwort von AI

Wenn in C# für Referenztypen keine eigenen Vergleichsmethoden implementiert sind (zum Beispiel, wenn die Methoden Equals und GetHashCode nicht überschrieben wurden), erfolgt der Vergleich der Objekte standardmäßig anhand der Referenz. Das bedeutet, dass zwei Objekte nur dann als gleich gelten, wenn sie auf dasselbe Exemplar im Speicher verweisen.

Beispiel:

class Person {}

var p1 = new Person();
var p2 = new Person();

bool areEqual = p1.Equals(p2); // false, da unterschiedliche Objekte
bool areSame = Object.ReferenceEquals(p1, p2); // false

var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true

Ohne Überschreibung prüft der Vergleich also, ob die Variablen auf dasselbe Objekt verweisen.