Sobes.tech
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.