2012-05-01 6 views
5

मैं इस शर्त को निर्धारित करना चाहता हूं कि मेरे वर्ग में बराबर() के ओवरराइड पर कोड बदलना कोड पर होगा।सभी संदर्भों की तलाश करते समय किसी विधि के ओवरराइड को कैसे छोड़ें

public override bool Equals(object obj) 
    { 
    // My code to be changed 
    return true; 
    } 

जब मैं Shift-F12 है सभी संदर्भों को खोजने के लिए, दृश्य स्टूडियो 126,703 स्थानों रिटर्न मैं कहाँ object.Equals बोल रहा हूँ()।

संदर्भों की तलाश करते समय समान() विधि के ओवरराइड को छोड़ने का कोई तरीका है?

+0

मुझे http://stackoverflow.com/questions/7399284/c-how-to-find-references-to-equals-operator-for-a-particular-class-in-visual-s पर एक समान प्रश्न दिखाई देता है – GregC

+1

मुझे मार्क की [अप्रचलित] चाल पसंद है। – GregC

+0

हालांकि, "त्रुटि CS0809: त्रुटि के रूप में चेतावनी: अप्रचलित सदस्य 'Foo.ToString()' गैर-अप्रचलित सदस्य 'ऑब्जेक्ट को ओवरराइड करता है। ToString()'"। और यदि "#pragma चेतावनी 80 9 अक्षम करें" तो [अप्रचलित] विशेषता को अनदेखा किया जाता है। :-P – yoyo

उत्तर

5

क्योंकि Equals विधि एक object स्तर पर परिभाषित किया गया है, अपने वर्ग की एक वस्तु को आसानी से एक विधि है कि Equals कॉल की तुलना में यह एक object है कि ज्यादा कुछ नहीं जानते हुए भी करने के लिए पारित किया जा सकता है।

उदाहरण के लिए, यदि आप कभी भी अपने ऑब्जेक्ट को हैशसेट में जोड़ते हैं, या यदि आप अपने ऑब्जेक्ट को शामिल करने वाले संग्रह पर .Distinct() पर कॉल करते हैं, तो आप अप्रत्यक्ष रूप से Equals पर आक्रमण करेंगे।

Equals ओवरराइड करने वाले सभी स्थानों को खोजने का एकमात्र तरीका यह है कि आपकी कक्षा का उपयोग करने वाले सभी स्थानों को ढूंढना और देखें कि इसके साथ क्या किया जाता है।

+1

यह पूरी तरह से बताता है ... लेकिन लड़का मैं निराश हूं। मुझे अब के माध्यम से कंघी करने के लिए बहुत सारे कोड मिल गए हैं। –

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

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