Sobes.tech
Junior — Middle

U kojim slučajevima se vrši poređenje referentnih tipova podataka?

sobes.tech АИ

Одговор од АИ

U C#-u, poređenje referentnih tipova vrši se u sledećim slučajevima:

  • Poređenje referenci (ReferenceEquals) — proverava da li dve promenljive ukazuju na isti objekat u memoriji.

  • Prepisivanje metode Equals() — za poređenje sadržaja objekata, a ne njihovih adresa.

  • Operatori == i != — po default-u, za referentne tipove, porede reference, ali mogu biti preopterećeni za poređenje sadržaja.

Primer:

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

Dakle, poređenje referentnih tipova se vrši ili da bi se proverilo da li promenljive ukazuju na isti objekat, ili za poređenje sadržaja objekata ako je metoda Equals prepisana.