2010-04-20 19 views
6

मैं उलझन में हूँ ऐसा क्यों संकलित:कोई पैरामीटर संकलित करने वाला प्रतिनिधि क्यों संकलित करता है?

private delegate int MyDelegate(int p1, int p2); 

    private void testDelegate() 
    { 
     MyDelegate imp = delegate 
     { 
      return 1; 
     }; 
    } 

MyDelegate एक विधि है कि सही दो पूर्णांक पैरामीटर लेता है और एक अन्य पूर्णांक देता है, के लिए एक सूचक होना चाहिए? मुझे ऐसी विधि असाइन करने की अनुमति क्यों है जिसमें कोई पैरामीटर नहीं है?

दिलचस्प है, इन संकलन नहीं करता है (यह हस्ताक्षर बेमेल के बारे में शिकायत, जैसा कि मैंने उम्मीद थी)

private void testDelegate() 
    { 
     // Missing param 
     MyDelegate imp = delegate(int p1) 
     { 
      return 1; 
     }; 

     // Wrong return type 
     MyDelegate imp2 = delegate(int p1, int p2) 
     { 
      return "String"; 
     }; 
    } 

किसी भी मदद के लिए धन्यवाद!

रयान

उत्तर

5

ठीक है, पहले नमूने में संकलक आसानी से देख सकते हैं कि कोई पैरामीटर उपयोग किया जाता है, और कुछ dummies के स्थानापन्न।

यह एक डिजाइन निर्णय की तरह, .नेट 2 में lambdas के लिए नेट में लग रहा है कहीं नेट 1 में निर्दिष्ट-सब कुछ से सड़क पर गुमनाम तरीकों के माध्यम से 3

6

आपका पहला उदाहरण शॉर्ट हाथ वाक्य रचना करता है, तो है प्रतिनिधि को पैरामीटर की आवश्यकता नहीं है। यदि आपको उनमें से किसी एक की भी आवश्यकता है, तो आपको उन्हें सभी प्रदान करने की आवश्यकता है, यही कारण है कि दूसरे उदाहरण का पहला भाग संकलित नहीं होगा।

+0

आपके उत्तर के लिए बहुत बहुत धन्यवाद; यह अच्छी समझ में आता है। मैंने उपर्युक्त को "सही" के रूप में चिह्नित किया क्योंकि यह पहले वहां गया था। धन्यवाद! – Ryan

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