Sobes.tech
Junior — Middle

Hogyan történik a referencia típusú objektumok összehasonlítása, ha nem valósultak meg saját összehasonlító módszerek?

sobes.tech MI

Válasz az MI-től

Ha a C#-ban a referencia típusokra nem valósítanak meg saját összehasonlító módszereket (például, ha nem írják felül az Equals és GetHashCode metódusokat), akkor az objektumok összehasonlítása alapértelmezés szerint referencia alapján történik. Ez azt jelenti, hogy két objektum csak akkor tekinthető egyenlőnek, ha ugyanarra a példányra mutatnak a memóriában.

Példa:

class Person {}

var p1 = new Person();
var p2 = new Person();

bool areEqual = p1.Equals(p2); // false, mert külön objektumok
bool areSame = Object.ReferenceEquals(p1, p2); // false

var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true

Így, anélkül, hogy felülírnánk, a összehasonlítás ellenőrzi, hogy a változók ugyanarra az objektumra mutatnak-e.