Sobes.tech
Junior — Middle

Kako se vrši poređenje objekata referentnog tipa ako nisu implementirane sopstvene metode poređenja?

sobes.tech АИ

Одговор од АИ

Ако у C# за референтни типове нису реализовани сопствени методи за поређење (на пример, ако методи Equals и GetHashCode нису преписани), поређење објеката по подразумевану вредност се врши по референци. То значи да се два објекта сматрају једнаким само ако указују на исти пример у меморији.

Пример:

class Person {}

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

bool areEqual = p1.Equals(p2); // false, јер су различити објекти
bool areSame = Object.ReferenceEquals(p1, p2); // false

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

Стога, без преписа, поређење проверава да ли променљиве указују на исти објекат.