Junior — Middle
Kaip atliekamas nuorodų tipo objektų palyginimas, jei nėra įgyvendinti savi palyginimo metodai?
sobes.tech AI
Atsakymas iš AI
Jei C# kalbant apie nuorodinius tipus nėra įgyvendinti savi palyginimo metodai (pavyzdžiui, jei nėra perrašyti Equals ir GetHashCode metodai), objektų palyginimas pagal numatytuosius nustatymus vyksta pagal nuorodą. Tai reiškia, kad du objektai laikomi lygiais tik tada, kai nurodo į tą patį egzempliorių atmintyje.
Pavyzdys:
class Person {}
var p1 = new Person();
var p2 = new Person();
bool areEqual = p1.Equals(p2); // false, nes tai skirtingi objektai
bool areSame = Object.ReferenceEquals(p1, p2); // false
var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true
Todėl, jei nėra perrašyta, palyginimas tikrina, ar kintamieji nurodo tą patį objektą.