এখানে আমি প্রতিনিধি, মাল্টিকাস্ট ডেলিগেটস এবং তাদের ব্যবহার সম্পর্কে ব্যাখ্যা করতে যাচ্ছি .. ডেলিগেট একটি প্রকার যা কোনও বস্তুতে পদ্ধতি (গুলি) রেফারেন্স ধারণ করে। এটি একটি প্রকার নিরাপদ ফাংশন পয়েন্টার হিসাবেও উল্লেখ করা হয়। আমরা বলতে পারি একটি প্রতিনিধি একটি প্রকার যা কোনও পদ্ধতি স্বাক্ষরের সংজ্ঞা দেয়।
আপনি যখন কোনও প্রতিনিধি তাত্ক্ষণিকভাবে ব্যবহার করেন, আপনি কোনও সামঞ্জস্যপূর্ণ স্বাক্ষরের সাথে কোনও পদ্ধতির সাথে এর উদাহরণটি যুক্ত করতে পারেন। আপনি প্রতিনিধি উদাহরণের মাধ্যমে পদ্ধতিটি (বা কল) করতে পারেন। প্রতিনিধিদের অন্যান্য পদ্ধতির আর্গুমেন্ট হিসাবে পদ্ধতিগুলি পাস করার জন্য ব্যবহৃত হয়। ইভেন্ট হ্যান্ডলারগুলি প্রতিনিধিদের মাধ্যমে আহবান করা পদ্ধতিগুলির চেয়ে বেশি কিছু নয়। প্রতিনিধিদের ব্যবহারের সুবিধাগুলি হ'ল, কলারের কাছ থেকে পদ্ধতিটির কলকে এনপ্যাপুলেট করা প্রতিনিধিদের কার্যকর ব্যবহার প্রয়োগের কার্যকারিতা উন্নত করে একটি পদ্ধতিকে অ্যাসিঙ্ক্রোনালি কল করতে ব্যবহৃত হয়। প্রতিনিধিদের কিছু সম্পত্তি আছে
Delegates are like C++ function pointers but are type safe.
Delegates allow methods to be passed as parameters.
Delegates can be used to define callback methods.
Delegates can be chained together; for example, multiple methods can be called on a single event.
Methods do not have to match the delegate signature exactly.
সর্বজনীন প্রতিনিধি প্রকারের_পরে_ডিলেগেট প্রতিনিধি_নাম () // ঘোষণা
You can use delegates without parameters or with parameter list
If you are referring to the method with some data type then the delegate which you are declaring should be in the same format. This is why it is referred to as type safe function pointer. Here I am giving an example with String.
নিম্নলিখিত উদাহরণটি একটি প্রতিনিধি অপারেশন দেখায়:
namespace MyDelegate
{
class Program
{
private delegate void Show(string s);
// Create a method for a delegate.
public static void MyDelegateMethod(string me
ssage)
{
System.Console.WriteLine(message);
}
static void Main(string[] args)
{
Show p = MyDelegateMethod;
p("My Delegate");
p.Invoke("My Delegate");
System.Console.ReadLine();
}
}
}
মাল্টিকাস্ট ডেলিগেট কী?
এটি একটি প্রতিনিধি যা একাধিক পদ্ধতির রেফারেন্স ধারণ করে। মাল্টিক্যাস্ট প্রতিনিধিদের অবশ্যই কেবল এমন পদ্ধতি থাকতে হবে যা বাতিল হয়ে যায়, অন্যথায় রান-টাইম ব্যতিক্রম রয়েছে।
delegate void MyMulticastDelegate(int i, string s);
Class Class2
{
static void MyFirstDelegateMethod(int i, string s)
{
Console.WriteLine("My First Method");
}
static void MySecondDelegateMethod(int i, string s)
{
Console.WriteLine("My Second Method");
}
static void Main(string[] args)
{
MyMulticastDelegate Method= new MyMulticastDelegate(MyFirstDelegateMethod);
Method+= new MyMulticastDelegate (MySecondDelegateMethod);
Method(1,"Hi"); // Calling 2 Methodscalled
Method-= new MyMulticastDelegate (MyFirstDelegateMethod);
Method(2,"Hi"); //Only 2nd Method calling
}
}
এখানে ডেলিগেটটি + = অপারেটর ব্যবহার করে যুক্ত করা হয় - এবং অপারেটর ব্যবহার করে অপসারণ করা হয়।
ডেলিগেট প্রকারগুলি .NET ফ্রেমওয়ার্কের প্রতিনিধি শ্রেণি থেকে প্রাপ্ত। প্রতিনিধি প্রকারগুলি সিল করা হয় — সেগুলি উত্পন্ন করা যায় না। যেহেতু তাত্ক্ষণিক প্রতিনিধি একটি অবজেক্ট, তাই এটি প্যারামিটার হিসাবে পাস করা যায়, বা কোনও সম্পত্তিতে বরাদ্দ করা যেতে পারে। এটি কোনও পদ্ধতির মাধ্যমে কোনও প্রতিনিধিটিকে প্যারামিটার হিসাবে গ্রহণ করতে এবং পরে ডেলিগেটকে কল করার অনুমতি দেয়। এটি একটি অ্যাসিক্রোনাস কলব্যাক হিসাবে পরিচিত।