Sobes.tech
Junior — Middle

In quali casi viene effettuato il confronto tra tipi di dati di riferimento?

sobes.tech AI

Risposta dell'AI

In C# la comparazione dei tipi di riferimento avviene nei seguenti casi:

  • Confronto delle referenze (ReferenceEquals) — verifica se due variabili puntano allo stesso oggetto in memoria.

  • Sovrascrittura di Equals() — per confrontare il contenuto degli oggetti, non i loro indirizzi.

  • Operatori == e != — di default, per i tipi di riferimento confrontano le referenze, ma possono essere sovraccaricati per confrontare il contenuto.

Esempio:

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

Pertanto, la comparazione dei tipi di riferimento viene effettuata sia per verificare se le variabili puntano allo stesso oggetto, sia per confrontare il contenuto degli oggetti se il metodo Equals è stato sovrascritto.