مقدمه:
در زبان برنامهنویسی C#، Delegate یکی از پیشرفتهترین قابلیتهای این زبان است که به شما اجازه میدهد روشهای جدیدی برای برنامهنویسی و الگوهای طراحی بهکار برید. در این مقاله، با مفهوم Delegate و چگونگی استفاده از آن در C# آشنا خواهیم شد.
در C# مانند یک اشارهگر قابل فراخوانی به متد است. به بهعبارت دیگر، این مکانیزمی است که اجازه میدهد به Delegate یک متد به عنوان آرگومان به دیگر متدها ارسال کنید. به کمک آن میتوانید کدی بنویسید که به صورت پویا تصمیم بگیرد کدام متد باید اجرا شود
2. کاربردهای Delegate
یکی از کاربردهای Delegate پیادهسازی مفهوم رویداد (Event) در C# است. بهکمک رویدادها، میشود از روشهایی برای ارتباط بین کلاسها استفاده کنید که بدون نیاز به سفارشیسازی کلاسها با یکدیگر کار کنند.
برخی از کاربردهای دیگر شامل پیادهسازی الگوی CallBack در برنامهها و استفاده از الگوی Pub-Sub برای توزیع پیامهای یک سیستم است.
از مدل های کاربردی و پیش تعریف شده آن در سیشارپ میتوان به Arrow Function ها اشاره کرد که به طور مکرر در پروژه های حرفه ای استفاده میشن .
3. تعریف Delegate در C#
برای تعریف یک Delegate به صورت زیر عمل میکنیم:
delegate bool SampleDelegate(string input);
این مثال یک Delegate به اسم SampleDelegate تعریف میکند که نوع بازگشتی آن bool است و پارامتر ورودی string میپذیرد.
4. استفاده از Delegate
بعد از تعریف Delegate، باید یک متد با دستوراتی که میخواهیم اجرا شود بنویسیم:
public static bool CheckLength(string input){ return input.Length > 5; }
حالا میخواهیم از Delegate برای ارسال این متد به متد دیگر استفاده کنیم. برای این کار نیاز است که یک شیء از نوع Delegate ایجاد و متد مدنظر را به آن انتساب دهیم:
SampleDelegate del = new SampleDelegate(CheckLength);
و در نهایت، میتوانیم از Delegate برای فراخوانی متد استفاده کنیم:
string userInput = “Hello, World!”; bool result = del(userInput); // true
5.مولتی کست دلیگیت ( Multicast Delegate )
دلیگیت های C# میتوانند بیش از یک متد را در خود ذخیره کنند. این نوع از Delegate بهعنوان Multicast Delegate شناخته میشوند. برای استفاده از این نوع Delegate، میتوانید از عملگر+ و - برای اضافه و حذف کردن متدها استفاده کنید. توجه داشته باشید که برای اینکار نیاز است تمام متدها نوع بازگشتی Void داشته باشند.
6. طراحی Event به کمک Delegate
یکی از بهترین استفادهها از Delegateدر پیاده سازی Eventها است. به عنوان یک مثال ساده، فرض کنید یک کلاس Publisher داریم که در صورت رخدادن یک رویداد، میخواهیم متدهای کلاسهای مشترک (Subscriber) را فراخوانی کنیم. در اینجا میتوانیم از Delegate برای طراحی این مفهوم استفاده کنیم.
نتیجه گیری:
در سیشارپ دیلیگیت ها ابزار بسیار قدرتمندی هستند که قابلیتهای جدیدی به برنامهنویسان ارائه میدهند. مهمترین کاربردهای آنها شامل طراحی رویدادها و الگوهای طراحی دیگر است. در این مقاله با مفهوم Delegate و چگونگی استفاده از آن در C# آشنا شدیم. با استفاده از این مفهوم میتوانید برنامههای مؤثر و قابلیتهای جدیدی طراحی کنید.
تا اینجا به صورت مقدماتی با دلیگیت آشنا شدیم ، در بخش های بعد بیشتر به این مبحث میپردازیم و عمیق تر وارد اون میشیم .