2011-10-13 22 views
12

दोनों के बीच क्या अंतर है?मेथडइवोक प्रतिनिधि या लैम्ब्डा अभिव्यक्ति

Invoke((MethodInvoker) delegate { 
     checkedListBox1.Items.RemoveAt(i); 
     checkedListBox1.Items.Insert(i, temp + validity); 
     checkedListBox1.Update(); 
    } 
); 

बनाम

Invoke((MethodInvoker) 
    (
     () => 
     { 
      checkedListBox1.Items.RemoveAt(i); 
      checkedListBox1.Items.Insert(i, temp + validity); 
      checkedListBox1.Update(); 
     } 
    ) 
); 

वहाँ लैम्ब्डा अभिव्यक्ति का उपयोग करने के लिए किसी भी कारण है? और (MethodInvoker) कास्टिंग प्रतिनिधि और लैम्बडा का प्रकार MethodInvoker में है? किस प्रकार की अभिव्यक्ति को (MethodInvoker) कास्ट की आवश्यकता नहीं होगी?

उत्तर

16

1) लैम्ब्डा अभिव्यक्ति कुछ कम और है क्लीनर

2) हाँ

3) आप इस तरह कार्रवाई प्रकार, इस्तेमाल कर सकते हैं:

Invoke(new Action(
    () => 
    { 
     checkedListBox1.Items.RemoveAt(i); 
     checkedListBox1.Items.Insert(i, temp + validity); 
     checkedListBox1.Update(); 
    } 
) 
); 
+0

मैं देखता हूं, एक्शन टाइप। एक्शन टाइप बनाम कास्टिंग का उपयोग करने में कोई अंतर? – Jack

+0

यहां एक्शन बनाम methodinvoker के बारे में एक चर्चा है: http://stackoverflow.com/questions/1167771/methodinvoker-vs-action-for-control-begininvoke – hcb

+0

इस बारे में पता नहीं था, धन्यवाद दोस्त! – TheGateKeeper

2

दो दृष्टिकोण समकक्ष हैं। पहले को अनाम विधि के रूप में जाना जाता है, और यह पहले .net 2.0 क्षमता है। लैम्ब्डा को कास्ट की आवश्यकता नहीं होनी चाहिए।

मैं लैम्ब्डा को पसंद करूंगा, क्योंकि इसका आधुनिक सी #/नेट विकास में अधिक सर्वव्यापी उपयोग है। अनाम प्रतिनिधि लैम्बडा पर कुछ भी नहीं पेश करता है। लैम्ब्डा टाइप अनुमान को अनुमति देता है, जो कुछ मामलों में सुविधाजनक से आवश्यक है।

1

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

दूसरी तरफ एक एक्शन 4 पैरामीटर तक ले सकता है।

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

  • कोई संबंधित समस्या नहीं^_^