Junior — Middle
Kuidas toimub viidetüüpi objektide võrdlus, kui isiklikud võrdlusmeetodid pole rakendatud?
sobes.tech AI
Vastus AI-lt
Kui C#-s pole rakendatud oma võrdlusmeetodeid viidetüüpide jaoks (näiteks, kui Equals ja GetHashCode meetodid pole üle kirjutatud), toimub objektide võrdlemine vaikimisi viite alusel. See tähendab, et kaks objekti loetakse võrdseteks ainult siis, kui nad viitavad samale eksemplarile mälus.
Näide:
class Person {}
var p1 = new Person();
var p2 = new Person();
bool areEqual = p1.Equals(p2); // false, kuna need on erinevad objektid
bool areSame = Object.ReferenceEquals(p1, p2); // false
var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true
Seega, kui pole üle kirjutatud, kontrollib võrdlus, kas muutujad viitavad samale objektile.