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