मैंने अपनी कई परियोजनाओं में घटनाओं और प्रतिनिधियों का उपयोग किया, लेकिन फिर भी मुझे अपने दिमाग में कुछ संदेह हैं कि एक परियोजना में घटनाओं और प्रतिनिधियों का उपयोग करना है और के बीच एक प्रतिनिधि और एक घटना के बीच क्या अंतर है। क्या कोई इसे समझा सकता है कृप्या?घटनाओं और प्रतिनिधियों का उपयोग कहां करें?
उत्तर
ए Delegate एक प्रकार है जो एक विधि कॉल को समाहित कर सकता है। जब आप किसी ऑब्जेक्ट के रूप में विधि का इलाज करना चाहते हैं और उसे पास करना चाहते हैं तो आपको एक प्रतिनिधि का उपयोग करना चाहिए।
एक Event एक प्रतिनिधि के रूप में एक प्रतिनिधि को उजागर करने का एक तरीका है जिस पर आपकी कक्षा के बाहर कोई भी कोड उनके हैंडलर संलग्न कर सकता है लेकिन प्रतिनिधि को नहीं बुला सकता है। यदि आप अपने प्रतिनिधि को सार्वजनिक संपत्ति के रूप में बेनकाब करते हैं, तो आपकी कक्षा के बाहर कोड न केवल अपने हैंडलर संलग्न कर सकता है बल्कि प्रतिनिधि को भी बुला सकता है।
इसके अलावा घटनाएं आपको हटाए गए तरीकों को जोड़ने की अनुमति देती हैं जिन्हें हैंडलर से जुड़े हुए हैं, जैसे कि सार्वजनिक संपत्ति के गेटर और सेटटर की तरह, आप प्रक्रिया को बेहतर तरीके से नियंत्रित करने की अनुमति देते हैं।
आपको ईवेंट का उपयोग करना चाहिए जब आप अन्य कक्षाओं को अपनी कक्षा में किसी ईवेंट की सदस्यता लेना चाहते हैं और ऐसा होने पर अधिसूचित किया जाना चाहिए।
public delegate void MyMessageHandlerType(string message);
public class EventTest
{
public event MyMessageHandlerType MessageEvent
{
add { } // invoked when MessageEvent += SomeMethod
remove { } // invoked when MessageEvent -= SomeMethod
}
}
दोनों प्रतिनिधि और कार्यक्रम कॉलबैक तंत्र प्रदान करते हैं। एक घटना एक कॉलबैक तंत्र प्रदान करती है जो कि में किसी भी प्रकार के संलग्न हैंडलर में हो सकती है, और यह कोड अक्सर हैंडलर की संख्या (यदि कोई हो) की परवाह किए बिना समान तरीके से काम करता है। एक अच्छा उदाहरण एक खिड़की की Resized
घटना हो सकती है; खिड़की का आकार बदलना काम करेगा चाहे कोई ईवेंट हैंडलर जुड़ा हुआ हो या नहीं; घटना एक अधिसूचना तंत्र है।
एक प्रतिनिधि कई इंद्रियों में अधिक जुड़ा हुआ है। आम तौर पर आप एक प्रतिनिधि सदस्य के साथ बिल्कुल एक विधि को जोड़ सकते हैं, और अक्सर उनकी अपेक्षा की जाती है; उदाहरण के लिए LINQ एक्सटेंशन विधियां (जैसे Where
) लें: वे तब तक काम नहीं करेंगे जब तक आप प्रतिनिधि पैरामीटर के लिए बिल्कुल एक विधि प्रदान नहीं करते।
- 1. मैं प्रतिनिधियों का उपयोग कहां उपयोग करूं?
- 2. .NET प्रतिनिधियों, घटनाओं, और घटनाओं को समझने में सहायता
- 3. घटनाओं का उपयोग क्यों करें?
- 4. ipython का उपयोग कहां करें और ipthon shell कहां है?
- 5. अस्थिरता का उपयोग कहां करें?
- 6. कमजोर घटनाओं का उपयोग कब करें?
- 7. Wsgen का उपयोग कहां करें?
- 8. प्रतिनिधियों और कॉलबैक
- 9. आप सी # में प्रतिनिधियों का उपयोग कब करेंगे?
- 10. सामग्री-प्रकार और प्रतिनिधियों
- 11. प्रतिनिधियों की सूची और
- 12. सी # प्रतिनिधियों और विधि हस्ताक्षर
- 13. बेनामी विधियों और प्रतिनिधियों
- 14. सी # घटनाओं और वर्ग तरीकों
- 15. Jquery घटनाओं का चयन करें
- 16. 'फैक्टरीगर्ल.बिल्ड_स्ट्यूबबेड' का उपयोग कहां करें और आरएसपीसी के 'मॉक'/`डबल`
- 17. वेब एप्लिकेशन में इंटरसेप्टर्स का उपयोग कहां और कैसे करें?
- 18. नेस्टेड कक्षाओं का उपयोग कहां और कैसे करें?
- 19. एसक्यूएल: का उपयोग कर कहां और बदले
- 20. का चयन करें और कहां खंड
- 21. स्टैंडर्ड प्रतिनिधियों
- 22. मल्टीकास्ट प्रतिनिधियों - आईओएस
- 23. सी # (या अन्य भाषाओं) में प्रतिनिधियों का उपयोग
- 24. विस्तारशीलता प्राप्त करने के लिए प्रतिनिधियों का सही/गलत उपयोग
- 25. निर्माण घटनाओं में कंपाइलर स्थिरांक का उपयोग
- 26. एक प्लगइन बनाएं, घटनाओं का पर्दाफाश करें
- 27. जीसी घटनाओं को शुरू और बंद करें
- 28. कोको विरासत के बजाय प्रतिनिधियों का उपयोग क्यों करता है?
- 29. वैकल्पिक प्रतिनिधियों
- 30. NSNetService प्रतिनिधियों
यहां अच्छा स्पष्टीकरण: http://blog.monstuff.com/archives/000040.html – SubniC
एक कार्यक्रम केवल प्रतिनिधि का एक विशेष रूप है। – VVS
संभावित डुप्लिकेट [घटनाओं और प्रतिनिधियों और उसके संबंधित अनुप्रयोगों के बीच अंतर] (http://stackoverflow.com/questions/563549/difference-between-events-and-delegates-and-its-respective-plplications) –