Junior — Middle
In welchen Fällen wird der Vergleich von Referenzdatentypen durchgeführt?
sobes.tech KI
Antwort von AI
In C# wird der Vergleich von Referenztypen in den folgenden Fällen durchgeführt:
-
Vergleich von Referenzen (ReferenceEquals) — überprüft, ob zwei Variablen auf dasselbe Objekt im Speicher verweisen.
-
Überschreiben von Equals() — zum Vergleich des Inhalts von Objekten, nicht ihrer Adressen.
-
Operatoren == und != — vergleichen standardmäßig Referenzen bei Referenztypen, können aber für den Inhaltsvergleich überladen werden.
Beispiel:
class Person {
public string Name;
public override bool Equals(object obj) {
if (obj is Person other) {
return this.Name == other.Name;
}
return false;
}
public override int GetHashCode() => Name.GetHashCode();
}
var p1 = new Person { Name = "Alice" };
var p2 = new Person { Name = "Alice" };
bool areSameReference = Object.ReferenceEquals(p1, p2); // false
bool areEqual = p1.Equals(p2); // true
Daher wird der Vergleich von Referenztypen entweder durchgeführt, um zu überprüfen, ob die Variablen auf dasselbe Objekt verweisen, oder um den Inhalt der Objekte zu vergleichen, wenn die Methode Equals überschrieben wurde.