Sobes.tech
Junior — Middle

Dans quels cas la comparaison des types de données de référence est-elle effectuée?

sobes.tech IA

Réponse de l'IA

En C#, la comparaison des types de référence se fait dans les cas suivants :

  • Comparaison de références (ReferenceEquals) — vérifie si deux variables pointent vers le même objet en mémoire.

  • Redéfinition de Equals() — pour comparer le contenu des objets, et non leurs adresses.

  • Opérateurs == et != — par défaut, pour les types de référence, ils comparent les références, mais ils peuvent être surchargés pour comparer le contenu.

Exemple :

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

Ainsi, la comparaison des types de référence est effectuée soit pour vérifier si les variables pointent vers le même objet, soit pour comparer le contenu des objets si la méthode Equals est redéfinie.