Sobes.tech
Junior — Middle

Jak porównywane są obiekty typu referencyjnego, jeśli nie zaimplementowano własnych metod porównania?

sobes.tech AI

Odpowiedź od AI

Jeśli w C# dla typu referencyjnego nie zaimplementowano własnych metod porównania (np. nie nadpisano metod Equals i GetHashCode), porównanie obiektów domyślnie odbywa się na podstawie odwołania. Oznacza to, że dwa obiekty są uważane za równe tylko wtedy, gdy wskazują na ten sam egzemplarz w pamięci.

Przykład:

class Person {}

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

bool areEqual = p1.Equals(p2); // false, ponieważ to różne obiekty
bool areSame = Object.ReferenceEquals(p1, p2); // false

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

W związku z tym, bez nadpisania, porównanie sprawdza, czy zmienne odwołują się do tego samego obiektu.