Sobes.tech
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ą.