Sobes.tech
Junior — Middle

¿En qué casos se realiza la comparación de tipos de datos de referencia?

sobes.tech AI

Respuesta de la IA

En C#, la comparación de tipos de referencia se realiza en los siguientes casos:

  • Comparación de referencias (ReferenceEquals) — verifica si dos variables apuntan al mismo objeto en memoria.

  • Sobrescribir Equals() — para comparar el contenido de los objetos, no sus direcciones.

  • Operadores == y != — por defecto, para tipos de referencia comparan las referencias, pero pueden ser sobrecargados para comparar el contenido.

Ejemplo:

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

Por lo tanto, la comparación de tipos de referencia se realiza ya sea para verificar si las variables apuntan al mismo objeto, o para comparar el contenido de los objetos si el método Equals ha sido sobrescrito.