c# - Difference between this two uses of MethodInvoker -


विधि इनकॉकर के दो प्रयोगों में क्या अंतर है:

1: < प्री> textbox1.Invoke (नया तरीकाविज्ञापन (बी));

2:

  textbox1.Invoke ((MethodInvoker) प्रतिनिधि {b ();});   

मैं केवल समझता हूं, कि अगर मुझे चाहिए तो वैरिएंट 2 मुझे मापदंडों के साथ b () कॉल करने की अनुमति देता है लेकिन इस 2 संस्करणों में अंतर क्या है?

संस्करण 1 मेरे लिए स्पष्ट है: मैं एक नया प्रतिनिधि तैयार करता हूं और इसे मेरे बी () पद्धति को पास करता हूं, जिसमे समान वापसी-प्रकार और पैरामीटर हैं, जैसे कि विधिविवेशकर्ता प्रतिनिधि। एक प्रतिनिधि का मानक कैरेक्टर।

लेकिन संस्करण 2 बिल्कुल क्या करता है? इसका मतलब क्या है / क्या "प्रतिनिधि" शब्द यहाँ है?

वी 1 एक नया methodInvoker < कोड> ऑब्जेक्ट और यह आपके b विधि को पैरामीटर के रूप में पास करता है MethodInvoker फिर "बी के साथ करता है" क्लास में ही होता है।

V2 में आप एक अनाम पद्धति बनाते हैं और इसे MethodInvoker पर डालते हैं और किसी भी "अतिरिक्त ऑब्जेक्ट" को instasciate नहीं है और आपके प्रतिनिधि को "सीधे" निष्पादित किया जाता है लैम्ब्डा का उपयोग करके इसे बुलाते हुए एक और भी छोटा रास्ता:

  textbox1.Invoke (() => gt; b ()); // या। इन्वोक (एक्शन) () = & gt; बी ());   

V1 में आप अपने स्वयं के क्रियान्वयन के साथ MethodInvoker की जगह भी कर सकते हैं, उदा। एक TryCatchLogInvoker जो b को सीधे निष्पादित नहीं करता है, लेकिन इसे "code " के अंदर होने वाले अपवादों को लॉग करने के लिए लपेटता है।

Comments

Popular posts from this blog

asp.net - Procedure or function "Procedure name" expects a parameter "Param name" which was not supplied occurs rarely -

c# - The item with identity 'Id' already exists in the metadata collection. Parameter name: item -

c++ - Redefined variable in the other module -