Avatar ·

Equals को ओवरराइड करते समय GetHashCode को ओवरराइड करना क्यों महत्वपूर्ण है?

सभी को नमस्कार! मैं एक शुरुआती C# डेवलपर हूँ, और मुझे Equals और GetHashCode मेथड्स को लेकर भ्रम हो गया है। मैंने `Name` और `Age` फील्ड्स के साथ एक सरल `Person` क्लास बनाया। मुझे चाहिए कि दो ऑब्जेक्ट्स को समान माना जाए यदि उनके ये फील्ड्स मेल खाते हैं। इसलिए मैंने `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; } } ``` जब मैं सीधे ऑब्जेक्ट्स की तुलना करता हूँ तो सब कुछ ठीक काम करता है: `person1.Equals(person2)` समान डेटा के लिए `true` लौटाता है। लेकिन जब मैंने इस क्लास को `HashSet` में उपयोग करने की कोशिश की, तो मैंने अजीब व्यवहार देखा। भले ही दो `Person` ऑब्जेक्ट्स में समान Name और Age हों, `HashSet` उन्हें अलग मानता है और दोनों को जोड़ देता है। उदाहरण के लिए: ```csharp Hash