System.Collections.Generic से सूची वर्ग के साथ काम करते समय, युक्त या इंडेक्सऑफ जैसी विधियां आईक्वाटेबल से लागू समानता विधि या ऑब्जेक्ट क्लास द्वारा प्रदान की गई ओवरराइड समान विधि का उपयोग करके पारित संदर्भ के ऑब्जेक्ट की तुलना करेंगी। यदि ऑब्जेक्ट। एक्वाल्स ओवरराइड नहीं है, तो यह जांच करेगा कि पारित संदर्भ उसी ऑब्जेक्ट को स्वयं के रूप में इंगित करता है या नहीं।संदर्भ से तुलना करें?
मेरा प्रश्न है: यदि बराबर ओवरराइड किया गया है तो संदर्भ द्वारा सूची तुलना करने का कोई तरीका है? कोड नीचे दी गई सूची से आइटम निकाल देंगे:
class Program
{
static void Main(string[] args)
{
var s1 = new SomeClass() { A = 5 };
var s2 = new SomeClass() { A = 5 };
var list = new List<SomeClass>();
list.Add(s1);
list.Remove(s2); // s1 will get removed, even though s2 has been
// passed, because s1's Equals method will return true.
}
}
class SomeClass
{
public int A { get; set; }
public override bool Equals(object obj)
{
SomeClass s = obj as SomeClass;
if (s == null)
{
return false;
}
else
{
return s.A == this.A;
}
}
}
मान लीजिए कि मैं बराबर की SomeClass 'कार्यान्वयन को दूर करने में असमर्थ हूँ चलो, वहाँ के बजाय संदर्भ मूल्य से तुलना सूची बनाने का एक तरीका है?
धन्यवाद, ऐसा लगता है कि यह ठीक काम करता है। – haiyyu