मेरे पास यह क्लास है।
सार्वजनिक वर्ग फू {सार्वजनिक गुड आईडी} (प्राप्त करें; सेट; } सार्वजनिक ओवरराइड बूल बराबर (वस्तु obj) {फू अन्य ओज = obj फू के रूप में; वापसी अन्य ओबज == नल & amp; amp; OtherObj.Id == this.Id; } सार्वजनिक ओवरराइड इंट होशकोड () {return.Id.GetHashCode (); }}
आप देख सकते हैं कि मैं इस वस्तु के लिए बराबर और GetHashCode को ओवरराइड कर सकता हूं।
अब मैं कोड का निम्न स्निपेट चलाता हूं
// फू सूची सूची बनाएं & lt; Foo & gt; FooList = नई सूची & lt; Foo & gt; (); FooList.Add (नया फू {आईडी = Guid.NewGuid ()}); FooList.Add (नया फू {आईडी = Guid.NewGuid ()}); FooList.Add (नया फू {आईडी = Guid.NewGuid ()}); FooList.Add (नया फू {आईडी = Guid.NewGuid ()}); FooList.Add (नया फू {आईडी = Guid.NewGuid ()}); // आखिरी बनाएँ गइड आईडी का आईडी रखें = Guid.NewGuid (); FooList.Add (नया Foo {आईडी = आईडी}); कंसोल.प्रकाश रेखा ("सूची गणना {0}", fooList.Count); // सूची फू फू में FindFoo = fooList खोजें। जहां & lt; Foo & gt; (वस्तु = & gt; आइटम.आईडी == आईडी) .FirstOrDefault & lt; Foo & gt; (); अगर (findFoo! = नल) {कंसोल। वीडलाइन ("फू मिला"); // मिला फू अब मैं सूची fooList.Remove (findFoo) से इसे हटाना चाहता हूँ; } कंसोल.प्रकाश रेखा ("सूची गणना {0}", fooList.Count);
जब यह फ़ू चला जाता है, तो पाया जाता है, लेकिन सूची में मिले आइटम को हटा नहीं जाता है।
यह क्यों है? मैंने सोचा था कि बराबर और GetHashCode को ओवरराइड करने से इसे ठीक करना चाहिए?
<पूर्व>
अन्य ओबज वापसी करें == नल & amp; & amp; OtherObj.Id == this.Id;
क्या यह सही है? यह नहीं होना चाहिए
<पूर्व> अन्य ओबज वापसी करें! = नल & amp; amp; OtherObj.Id == this.Id;
Comments
Post a Comment