Avatar ·

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