इस पोस्ट में, हम C# में delegates और events के बीच अंतर को समझेंगे।
Delegate
'delegate' कीवर्ड का उपयोग करके घोषित किया जा सकता है।
यह एक फंक्शन पॉइंटर है।
यह रनटाइम के दौरान एक या अधिक मेथड्स का संदर्भ रखता है।
यह एक स्वतंत्र कीवर्ड है।
यह events पर निर्भर नहीं करता।
इसमें Combine() और Remove() मेथड्स होते हैं जो इनवोकेशन की सूची में मेथड्स जोड़ने में मदद करते हैं।
इसे एक मेथड में पैरामीटर के रूप में पास किया जा सकता है।
'=' ऑपरेटर का उपयोग एक सिंगल मेथड असाइन करने के लिए किया जा सकता है।
'+=' ऑपरेटर का उपयोग एक delegate को एकाधिक मेथड्स असाइन करने के लिए किया जा सकता है।
Event
'event' कीवर्ड का उपयोग करके घोषित किया जा सकता है।
इसे एक नोटिफिकेशन मैकेनिज्म के रूप में परिभाषित किया जा सकता है जो delegates पर निर्भर करता है।
यह delegate पर निर्भर करता है।
इसे delegates के बिना नहीं बनाया जा सकता।
इसे delegate इंस्टेंस के चारों ओर एक रैपर के रूप में समझा जा सकता है।
यह delegate के उपयोगकर्ताओं को delegate और इसकी इनवोकेशन सूची को रीसेट करने से रोकने में मदद करता है।
यह इनवोकेशन की सूची से केवल टारगेट जोड़ने या हटाने की अनुमति देता है।
'EventInfo' क्लास events का निरीक्षण करता है और इवेंट हैंडलर्स को बाइंड करने में मदद करता है।
इन हैंडलर्स में AddEventHandler() और RemoveEventHandler() जैसे मेथड्स शामिल हैं, जो क्रमशः इनवोकेशन की सूची में मेथड्स जोड़ने और हटाने में मदद करते हैं।
एक event को उठाया जा सकता है, लेकिन इसे एक मेथड में पैरामीटर के रूप में पास नहीं किया जा सकता।
'=' ऑपरेटर का उपयोग events के साथ नहीं किया जा सकता।
'+=' और '-=' ऑपरेटर्स का उपयोग event के साथ किया जा सकता है जो क्रमशः इवेंट हैंडलर्स को जोड़ते या हटाते हैं।
ये मेथड्स आंतरिक रूप से AddEventHandler और RemoveEventHandler जैसे मेथड्स को कॉल करेंगे।