Volver a la página principal
miércoles 25 septiembre 2024
35

Cómo comparar objetos en C#

El método object.Equals() en C# se utiliza para comparar si dos objetos son iguales. Es un método fundamental cuando se necesita comparar instancias de clases o tipos de datos, y puede ser sobreescrito para personalizar la lógica de comparación en tus propios objetos.

¿Qué es object.Equals() en C#?

object.Equals() es un método de la clase base System.Object que compara dos objetos y determina si son iguales. Por defecto, compara si las referencias de los objetos son las mismas (es decir, si apuntan al mismo lugar en memoria). Sin embargo, en muchos tipos, como las cadenas o estructuras de valor, la implementación de Equals() se sobreescribe para comparar el contenido de los objetos en lugar de sus referencias.

Ejemplos de uso de object.Equals() en C#

Comparar objetos simples

using System;

class Program
{
    static void Main()
    {
        object obj1 = 5;
        object obj2 = 5;

        // Comparar dos objetos
        bool sonIguales = obj1.Equals(obj2);
        Console.WriteLine("¿Son iguales? " + sonIguales); // Devuelve True
    }
}

Comparar objetos con referencias distintas

Si los objetos son distintos pero tienen el mismo contenido, Equals() puede devolver true, dependiendo de cómo esté implementado.

using System;

class Program
{
    static void Main()
    {
        string cadena1 = new string("Hola");
        string cadena2 = new string("Hola");

        // Comparar dos cadenas
        bool sonIguales = cadena1.Equals(cadena2);
        Console.WriteLine("¿Son iguales? " + sonIguales); // Devuelve True porque el contenido es igual
    }
}

Sobreescribir Equals en una clase personalizada

En una clase personalizada, es posible sobreescribir el método Equals() para definir cómo comparar dos instancias de esa clase.

using System;

class Persona
{
    public string Nombre { get; set; }
    public int Edad { get; set; }

    public override bool Equals(object obj)
    {
        // Verificar si obj es de tipo Persona
        if (obj is Persona otraPersona)
        {
            // Comparar las propiedades de las personas
            return this.Nombre == otraPersona.Nombre && this.Edad == otraPersona.Edad;
        }
        return false;
    }

    public override int GetHashCode()
    {
        return (Nombre, Edad).GetHashCode();
    }
}

class Program
{
    static void Main()
    {
        Persona persona1 = new Persona { Nombre = "Juan", Edad = 30 };
        Persona persona2 = new Persona { Nombre = "Juan", Edad = 30 };

        // Comparar dos instancias de Persona
        bool sonIguales = persona1.Equals(persona2);
        Console.WriteLine("¿Son iguales? " + sonIguales); // Devuelve True porque las propiedades son iguales
    }
}

Diferencia entre Equals() y ==

  • Equals() compara el contenido de los objetos o se puede sobreescribir para cambiar la lógica de comparación.
  • == en objetos, por defecto, compara si las referencias de memoria son las mismas. En tipos de valor, compara el valor almacenado.

Referencia oficial

Para más detalles, consulta la documentación oficial de Microsoft: Documentación de object.Equals()

Etiquetas:
csharp
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer