IComparer
इंटरफेस (जेनेरिक और गैर-जेनेरिक दोनों) आपको एक दूसरे के साथ दो उदाहरणों की तुलना करने की अनुमति देता है।
Compare
विधि आपको किसी अन्य उदाहरण के साथ किसी ऑब्जेक्ट की तुलना करने की अनुमति देती है। ऑफकोर्स, जब वर्तमान इंस्टेंस शून्य है, तो आपको इस मामले में NullReferenceException
मिलेगा, क्योंकि आप 'null' इंस्टेंस पर Compare
पर कॉल करते हैं। IComparer
लागू करने वाली कक्षा इस समस्या को दूर कर सकती है।
इसलिए, जब आप IComparer इंटरफ़ेस को लागू है, तो आप एक वर्ग जिसकी वजह से 'की तुलना' विधि, जो इस तरह कहा जा सकता है है होगा:
public class MyObjectComparer : IComparer<MyObject>
{
public int Compare(MyObject first, MyObject second)
{
// implement logic here to determine whether first is less, greater or equal then second.
}
}
यह आपको ऐसा करने के लिए अनुमति देता है:
var c = new MyObjectComparer();
var one = new MyObject();
var two = new MyObject();
c.Compare (one, two);
जब आप निर्माता जहां IEqualityComparer
उदाहरण निर्दिष्ट के साथ एक Hashtable
का दृष्टांत, इसका मतलब है कि दिए गए IEqualityComparer
निर्धारित करने के लिए एक निश्चित कुंजी पहले से Hashtable में मौजूद है कि क्या उपयोग किया जाएगा।
अन्यथा, कुंजी-ऑब्जेक्ट की तुलना विधि का उपयोग किया जाएगा।
स्रोत
2011-10-13 08:24:13