Por qué es importante sobrescribir GetHashCode al sobrescribir Equals en C#?
¡Hola a todos! Soy un desarrollador C# principiante y tengo confusión con los métodos Equals y GetHashCode.
Creé una clase simple `Person` con campos `Name` y `Age`. Necesito que dos objetos se consideren iguales si tienen estos campos iguales. Por lo tanto, sobrescribí el método `Equals`:
```csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
Person other = (Person)obj;
return Name == other.Name && Age == other.Age;
}
}
```
Todo funciona perfectamente cuando comparo objetos directamente: `person1.Equals(person2)` devuelve `true` para datos idénticos. Pero cuando intenté usar esta clase en un `HashSet`, noté un comportamiento extraño. Incluso si dos objetos `Person` contienen los mismos Name y Age, `HashSet` los considera diferentes y agrega ambos. Por ejemplo:
```csharp
Hash
No answers yet.
Inicia sesión para dejar una respuesta