Avatar ·

C# में Equals को ओवरराइड करते समय GetHashCode को क्यों ओवरराइड करना चाहिए?

सभी को नमस्कार! मैंने C# सीखना शुरू किया है और एक अजीब स्थिति का सामना किया है। मेरे पास `Name` और `Age` फील्ड वाला एक सरल `Person` क्लास है। मैं चाहता हूँ कि दो ऑब्जेक्ट्स को समान माना जाए यदि उनके ये फील्ड मेल खाते हैं। इसलिए मैंने अपने क्लास में `Equals` मेथड को ओवरराइड किया। यहाँ कोड का उदाहरण है: ```csharp 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; } } ``` `Equals` के माध्यम से तुलना करने पर सब कुछ ठीक काम करता है। लेकिन मैंने देखा कि Visual Studio एक चेतावनी देता है: `'Person' overrides Object.Equals(object) but does not override Object.GetHashCode()`। मैंने पढ़ा है कि `GetHashCode` को ओवरराइड करना चाहिए, लेकिन मुझे समझ नहीं आता क्यों। आखिरकार, मेरी तुलना लॉजिक तो वैसे भी काम कर रही है। क्या आप एक सरल उदाहरण के साथ समझा सकते हैं कि क्या टूट सकता है?