Sobes.tech
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.