Sobes.tech
Junior — Middle

V ktorých prípadoch sa vykonáva porovnanie referenčných typov údajov?

sobes.tech AI

Odpoveď od AI

V jazyku C# sa porovnávanie referenčných typov vykonáva v nasledovných prípadoch:

  • Porovnanie odkazov (ReferenceEquals) — kontroluje, či dve premenné odkazujú na ten istý objekt v pamäti.

  • Prepisovanie metódy Equals() — na porovnanie obsahu objektov, nie ich adries.

  • Operátory == a != — vo výchozom nastavení porovnávajú referencie u referenčných typov, ale môžu byť prepísané na porovnanie obsahu.

Prí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 spôsobom sa porovnanie referenčných typov vykonáva buď za účelom zistenia, či premenné odkazujú na ten istý objekt, alebo na porovnanie obsahu objektov, ak je metóda Equals prepísaná.