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.
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.
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
}
}
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
}
}
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
}
}
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.
Para más detalles, consulta la documentación oficial de Microsoft: Documentación de object.Equals()
Jorge García
Fullstack developer