Junior — Middle
Ako sa vykonáva porovnanie objektov referenčného typu, ak nie sú implementované vlastné metódy porovnania?
sobes.tech AI
Odpoveď od AI
Ak v C# pre referenčných typov nie sú implementované vlastné metódy porovnávania (napríklad, ak nie sú prepísané metódy Equals a GetHashCode), porovnanie objektov sa vykonáva predvolene na základe odkazu. To znamená, že dva objekty sú považované za rovnaké iba vtedy, ak odkazujú na ten istý exemplár v pamäti.
Príklad:
class Person {}
var p1 = new Person();
var p2 = new Person();
bool areEqual = p1.Equals(p2); // false, pretože ide o rôzne objekty
bool areSame = Object.ReferenceEquals(p1, p2); // false
var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true
Takže, bez prepísania, porovnanie kontroluje, či premenné odkazujú na ten istý objekt.