এই পোস্টে, আমরা C#-তে ডেলিগেট এবং ইভেন্টের পার্থক্য বুঝব।
ডেলিগেট
এটি 'delegate' কীওয়ার্ড দিয়ে ডিক্লেয়ার করা হয়।
এটি একটি ফাংশন পয়েন্টার।
রানটাইমে এক বা একাধিক মেথডের রেফারেন্স ধারণ করে।
এটি একটি স্বতন্ত্র কীওয়ার্ড।
এটি ইভেন্টের ওপর নির্ভরশীল নয়।
এতে Combine() এবং Remove() মেথড থাকে যা ইনভোকেশন লিস্টে মেথড যোগ করতে সাহায্য করে।
এটি একটি মেথডের প্যারামিটার হিসেবে পাস করা যায়।
'=' অপারেটর ব্যবহার করে একটি সিঙ্গল মেথড অ্যাসাইন করা যায়।
'+=' অপারেটর ব্যবহার করে একাধিক মেথড একটি ডেলিগেটে অ্যাসাইন করা যায়।
ইভেন্ট
এটি 'event' কীওয়ার্ড দিয়ে ডিক্লেয়ার করা হয়।
এটি একটি নোটিফিকেশন মেকানিজম যা ডেলিগেটের ওপর নির্ভরশীল।
এটি ডেলিগেটের ওপর নির্ভরশীল।
ডেলিগেট ছাড়া এটি তৈরি করা যায় না।
এটি একটি ডেলিগেট ইনস্ট্যান্সের চারদিকে একটি র্যাপার হিসেবে বুঝা যায়।
এটি ডেলিগেটের ইউজারদের ডেলিগেট এবং এর ইনভোকেশন লিস্ট রিসেট করতে বাধা দেয়।
এটি ইনভোকেশন লিস্টে টার্গেট যোগ বা রিমুভ করার অনুমতি দেয়।
'EventInfo' ক্লাস ইভেন্ট ইন্সপেক্ট করে এবং ইভেন্ট হ্যান্ডলার বাইন্ড করতে সাহায্য করে।
এই হ্যান্ডলারগুলিতে AddEventHandler() এবং RemoveEventHandler() মেথড রয়েছে যা যথাক্রমে ইনভোকেশন লিস্টে মেথড যোগ ও রিমুভ করতে সাহায্য করে।
একটি ইভেন্ট রেইজ করা যায়, কিন্তু মেথডের প্যারামিটার হিসেবে পাস করা যায় না।
'=' অপারেটর ইভেন্টের সাথে ব্যবহার করা যায় না।
'+=' এবং '-=' অপারেটর ইভেন্টের সাথে ব্যবহার করা যায় যা যথাক্রমে ইভেন্ট হ্যান্ডলার যোগ ও রিমুভ করে।
এই মেথডগুলো ইন্টারন্যালি AddEventHandler এবং RemoveEventHandler মেথডগুলো কল করে।