दिलचस्प पोस्ट
डीएओ और सर्विस लेयर (जेपीए / हाइबरनेट + स्प्रिंग) मैं एक HTML बटन कैसे पृष्ठ को पुनः लोड नहीं कर सकता UILabel (UITextView) ऑटो समायोजित फ़ॉन्ट आकार कैसे प्राप्त करें? जब स्थिर सी ++ क्लास सदस्यों को आरंभ किया जाता है? विशिष्ट वर्ण के लिए ऑरेकल एसक्यूएल में उपस्ट्रिंग का चयन कैसे करें? "Popup.html" से वर्तमान टैब DOM ऑब्जेक्ट तक पहुंच रहे हैं? कॉमा, स्पेस या अर्द्ध कोलन पर सीमांकित स्ट्रिंग पर Regex.Split () `नया 'कीवर्ड क्या करता है बहु-लाइन फ्लेक्स में लाइन ब्रेक झटपट और स्विफ्ट में एक दृश्य नियंत्रक पेश करें विजुअल स्टूडियो 2015 बहुत धीमा है Utf8_general_ci और utf8_unicode_ci के बीच diffrences क्या हैं? कैसे जावा कनेक्शन में mysql समयक्षेत्र बदलने के लिए एमवीसी 5 एक्सेस दावा पहचान उपयोगकर्ता डेटा जावास्क्रिप्ट के साथ दिनांक कैसे जोड़ / घटाना?

सी # प्रतिनिधि निहित बनाम बस पासिंग विधि संदर्भ

मेरे पास एक सरल सवाल है: फ़ंक्शन संदर्भ को पार करने के विरोध में सी # प्रतिनिधि को तत्काल बनाने का क्या लाभ है? मेरा कहने का तात्पर्य है:

क्यों कर:

Thread t = new Thread(new ThreadStart(SomeObject.SomeMethod)); 

जब आप कर सकते हैं:

 Thread t = new Thread(SomeObject.SomeMethod); 

दोनों मेरे अनुभव में संकलन और काम करेंगे … क्या मैं कुछ भूल रहा हूं?

Solutions Collecting From Web of "सी # प्रतिनिधि निहित बनाम बस पासिंग विधि संदर्भ"

जब तक विधि समूह SomeObject.SomeMethod में वापसी के प्रकार void साथ एक विधि होती है और कोई पैरामीटर नहीं लेते हैं कोई अंतर नहीं है। यह इसलिए है क्योंकि ThreadStart को एक delegate रूप में परिभाषित किया जाता है जो void देता void और कोई पैरामीटर नहीं लेता है और इसलिए विधि समूह SomeObject.SomeMethod से ThreadStart लिए एक निहित रूपांतरण है। इस प्रकार, दोनों Thread निर्माता के अधिभार Thread(ThreadStart) को लागू कर रहे हैं

भाषा विनिर्देश का प्रासंगिक अनुभाग §6.6 (विधि समूह रूपांतरण) है।

मेरे पास एक सरल सवाल है: फ़ंक्शन संदर्भ को पार करने के विरोध में सी # प्रतिनिधि को तत्काल बनाने का क्या लाभ है?

तो, यहां सिर्फ शब्दावली का एक सुधार है साथ में

 class MyObject { public void SomeMethod() { } } MyObject someObject = new MyObject(); 

कुछ someObject.SomeMethod द्वारा निरूपित वस्तु। कुछ विधि एक विधि समूह है। आप इसे केवल ओवरलोड किए गए तरीकों के सेट के रूप में सोच सकते हैं जो कुछ someObject.SomeMethod का उपयोग करके देखा जा सकता someObject.SomeMethod

संकलक अनुमान लगाएगा कि जब आप छोटा कोड टाइप करेंगे, तो आपको लंबा कोड चाहिए। परम प्रभाव में कोई अंतर नहीं है यदि आप पूर्ण निर्माता की स्पष्टता चाहते हैं, तो आप इसे रख सकते हैं; अगर आप केवल विधि समूह की संक्षिप्तता चाहते हैं, तो आप कम्पाइलर को कन्स्ट्रक्टर का अनुमान लगाने की अनुमति दे सकते हैं। यह सिर्फ एक शैलीगत विकल्प है

यह बराबर है विषय पर अच्छा परिचयात्मक लेख: सी # प्रतिनिधि, बेनामी पद्धतियां, और लम्ब्डा अभिव्यक्तियां – हे मेरे!