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