Junior — Middle
Come viene effettu confrontare gli oggetti di tipo riferimento se non sono implementati metodi di confronto propri?
sobes.tech AI
Risposta dell'AI
Se in C# non vengono implementati metodi di confronto personalizzati per i tipi di riferimento (ad esempio, se i metodi Equals e GetHashCode non sono sovrascritti), il confronto tra oggetti avviene di default per riferimento. Ciò significa che due oggetti sono considerati uguali solo se puntano allo stesso esempio in memoria.
Esempio:
class Person {}
var p1 = new Person();
var p2 = new Person();
bool areEqual = p1.Equals(p2); // false, perché sono oggetti diversi
bool areSame = Object.ReferenceEquals(p1, p2); // false
var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true
Pertanto, senza sovrascrittura, il confronto verifica se le variabili fanno riferimento allo stesso oggetto.