Sobes.tech
Junior — Middle

În ce cazuri se face compararea tipurilor de date de referință?

sobes.tech AI

Răspuns de la AI

În C#, compararea tipurilor de referință se face în următoarele cazuri:

  • Compararea referințelor (ReferenceEquals) — verifică dacă două variabile indică același obiect în memorie.

  • Suprascrierea Equals() — pentru compararea conținutului obiectelor, nu a adreselor lor.

  • Operatorii == și != — în mod implicit, pentru tipurile de referință compară referințele, dar pot fi suprascrise pentru compararea conținutului.

Exemplu:

class Person {
    public string Name;
    public override bool Equals(object obj) {
        if (obj is Person other) {
            return this.Name == other.Name;
        }
        return false;
    }
    public override int GetHashCode() => Name.GetHashCode();
}

var p1 = new Person { Name = "Alice" };
var p2 = new Person { Name = "Alice" };

bool areSameReference = Object.ReferenceEquals(p1, p2); // false
bool areEqual = p1.Equals(p2); // true

Prin urmare, compararea tipurilor de referință se face fie pentru a verifica dacă variabilele indică același obiect, fie pentru a compara conținutul obiectelor dacă metoda Equals a fost suprascrisă.