Junior — Middle
¿Por qué se sobrescriben los métodos GetHashCode y Equals en una clase de .NET?
sobes.tech AI
Respuesta de la IA
En .NET, los métodos GetHashCode y Equals se redefinen para una comparación correcta de objetos y un funcionamiento adecuado con colecciones como diccionarios (Dictionary) y conjuntos (HashSet).
- Equals determina cuándo dos objetos se consideran iguales en significado.
- GetHashCode devuelve un código numérico que se usa para buscar rápidamente un objeto en tablas hash.
Si solo se redefine Equals, pero no GetHashCode, los objetos pueden funcionar incorrectamente en colecciones hash. Normalmente, estos métodos se redefinen juntos para garantizar la coherencia: si Equals devuelve true para dos objetos, entonces su GetHashCode debe devolver el mismo valor.
Ejemplo:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj is Person other)
return Name == other.Name && Age == other.Age;
return false;
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Age);
}
}