Sobes.tech
Junior — Middle

Cum se realizează compararea obiectelor de tip referință dacă nu sunt implementate metode proprii de comparare?

sobes.tech AI

Răspuns de la AI

Dacă în C# pentru tipurile de referință nu sunt implementate metode proprii de comparare (de exemplu, dacă metodele Equals și GetHashCode nu sunt suprascrise), compararea obiectelor se face implicit după referință. Aceasta înseamnă că două obiecte sunt considerate egale doar dacă indică același exemplar în memorie.

Exemplu:

class Person {}

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

bool areEqual = p1.Equals(p2); // false, deoarece sunt obiecte diferite
bool areSame = Object.ReferenceEquals(p1, p2); // false

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

Prin urmare, fără suprascriere, comparația verifică dacă variabilele fac referire la același obiect.