Junior — Middle
Jak se provádí porovnání objektů referenčního typu, pokud nejsou implementovány vlastní metody porovnání?
sobes.tech AI
Odpověď od AI
Pokud v C# pro referenční typy nejsou implementovány vlastní metody porovnání (například pokud nejsou přepsány metody Equals a GetHashCode), pak se porovnání objektů provádí ve výchozím nastavení podle odkazu. To znamená, že dva objekty jsou považovány za stejné pouze pokud odkazují na stejný exemplář v paměti.
Příklad:
class Person {}
var p1 = new Person();
var p2 = new Person();
bool areEqual = p1.Equals(p2); // false, protože se jedná o různé objekty
bool areSame = Object.ReferenceEquals(p1, p2); // false
var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true
Tímto způsobem, pokud není přepsáno, porovnání kontroluje, zda proměnné odkazují na stejný objekt.