C# - Can someone tell me why and where I should use delegates? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 8 जवाब

मुझे लगता है मैं अवधारणा को समझता हूं एक प्रतिनिधि के सी # में एक विधि के लिए एक संकेतक के रूप में, लेकिन मैं किसी भी अच्छे उदाहरणों की खोज नहीं कर सकता जहां उनका उपयोग करना अच्छा विचार होगा। कुछ उदाहरण क्या हैं जो या तो प्रतिनिधियों के साथ काफी अधिक सुरुचिपूर्ण / बेहतर हैं या अन्य विधियों का उपयोग करके हल किया जा सकता है?

प्रतिनिधियों द्वारा आप वास्तव में क्या मतलब है? ये दो तरीके हैं जिनका उपयोग किया जा सकता है:

  void Foo (फ़ंक्ल & lt; int, string & gt; f) {// do stuff स्ट्रिंग s = f (42); // अधिक सामान}  

और

  शून्य बार () {Func & lt; int, string & gt; F = प्रतिनिधि (i) {वापसी i.ToString (); } // do stuff स्ट्रिंग s = f (42); // अधिक सामान}  

दूसरी बात यह है कि आप मक्खी पर नए कार्यों की घोषणा कर सकते हैं, क्योंकि प्रतिनिधि यह काफी हद तक लैम्ब्डा अभिव्यक्ति द्वारा प्रतिस्थापित किया जा सकता है, और किसी भी समय आपके पास एक छोटा सा तर्क है जिसका आप चाहते हैं 1) किसी अन्य फ़ंक्शन को पास करें, या 2) बस बार-बार निष्पादित करें। LINQ एक अच्छा उदाहरण है प्रत्येक LINQ फ़ंक्शन लैबडा अभिव्यक्ति को अपनी तर्क के रूप में लेता है, व्यवहार को निर्दिष्ट करता है। उदाहरण के लिए, यदि आपके पास सूची & lt; int & gt; L तब l.Select (x = & gt; (x.ToString ()) सूची में प्रत्येक तत्व पर ToString () को कॉल करेगा। और मैंने लिखा लैम्ब्डा अभिव्यक्ति के रूप में लागू किया गया है प्रतिनिधि।

पहला मामला दिखाता है कि चयन का कार्यान्वयन कैसे किया जा सकता है। आप एक प्रतिनिधि को अपने तर्क के रूप में लेते हैं, और फिर जब भी ज़रूरत होती है, आप कॉल करते हैं। यह कॉलर को फ़ंक्शन के व्यवहार को कस्टमाइज़ करने की अनुमति देता है। ) फिर से एक उदाहरण के रूप में, फ़ंक्शन स्वयं की गारंटी देता है कि जिस प्रतिनिधि को आप पास करते हैं उसे सूची में प्रत्येक तत्व पर बुलाया जाएगा, और प्रत्येक का उत्पादन वापस किया जाएगा। वास्तव में यह प्रतिनिधि क्या करता है

बेशक, वे घटनाओं की सदस्यता लेने के लिए भी उपयोग किए जाते हैं। संक्षेप में, प्रतिनिधि आपको फ़ंक्शन के संदर्भ में फ़ंक्शन में तर्क के रूप में उपयोग करने की अनुमति देते हैं कॉल करता है, उन्हें वेरिएबल्स और जो भी आप करना चाहते हैं उन्हें बताएंगे।


Comments