2012-03-04 12 views
8

मैंने यह post पढ़ा है लेकिन यह मेरे प्रश्न का उत्तर नहीं देता है।IEqualityComparer बनाम EqualityComparer?

MSDN says:

हमारा सुझाव है कि आप EqualityComparer (टी के) से निकाले जाते हैं बजाय IEqualityComparer (टी का) इंटरफेस को लागू करने की कक्षा, क्योंकि EqualityComparer (टी का) समानता के लिए वर्ग परीक्षण का उपयोग Iquatable (टी का)। ऑब्जेक्ट की बजाय विधि विधि। विधि विधि।

लेकिन अगर मैं कार्यान्वयन को देखो, वे दोनों सामान्य प्रकार का उपयोग करें:

public class AAA:IEqualityComparer<Box> 
    { 
     public bool Equals(Box x, Box y) 
     { 
     } 

     public int GetHashCode(Box obj) 
     { 
     } 
    } 

    public class BBB : EqualityComparer<Box> 
    { 
     public override bool Equals(Box x, Box y) 
     { 
     } 

     public override int GetHashCode(Box obj) 
     { 
     } 
    } 

मैं क्या याद आ रही है?

+3

कोई विचार नहीं। वह बयान मुझे कोई समझ नहीं आता है। – CodesInChaos

+0

दूसरे प्रश्न के उत्तर ने पहले से ही समझाया है कि इस कथन का कोई मतलब नहीं है। इसलिए मुझे यह नहीं मिलता कि आप इस प्रश्न से क्या उम्मीद कर रहे हैं। की – CodesInChaos

+3

संभव डुप्लिकेट [पसंद करते हैं EqualityComparer IEqualityComparer को ] (http://stackoverflow.com/questions/5707347/preferring-equalitycomparert-to-iequalitycomparert) – CodesInChaos

उत्तर

3

मुझे लगता है कि other post आप का उल्लेख करते हुए कहा गया है कि EqualityComparer<Box> लागू करता IEqualityComparer<Box> और IEqualityComparer है, तो आप यदि आप EqualityComparer<Box> से निकाले जाते हैं दोनों सामान्य और गैर जेनेरिक इंटरफेस को लागू करने की जरूरत नहीं है।

संबंधित मुद्दे