Sobes.tech
Junior — Middle

V jakých případech se provádí srovnání referenčních datových typů?

sobes.tech AI

Odpověď od AI

V jazyce C# se porovnání referenčních typů provádí v následujících případech:

  • Porovnání odkazů (ReferenceEquals) — kontroluje, zda dvě proměnné odkazují na stejný objekt v paměti.

  • Přepsání metody Equals() — pro porovnání obsahu objektů, nikoliv jejich adres.

  • Operátory == a != — ve výchozím nastavení porovnávají odkazy u referenčních typů, ale mohou být přepsány pro porovnání obsahu.

Příklad:

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

Tímto způsobem se porovnání referenčních typů provádí buď za účelem zjištění, zda proměnné odkazují na stejný objekt, nebo pro porovnání obsahu objektů, pokud je metoda Equals přepsána.