#csharp_for_beginners
دلیگیتها (delgate) در زبان سیشارپ نوعی دادهاند که مرجع به یک یا چند متد را نگه میدارند. Delegateها شبیه اشارهگر تابع هستند اما بهصورت شیءگرا پیادهسازی شدهاند. این ویژگی باعث میشود فقط متدهایی با امضای مشخص بتوانند به یک delegate متصل شوند.
برای تعریف یک delegate از کلمه کلیدی delegate استفاده میشود. تعریف delegate مشابه امضای یک متد است و مشخص میکند چه نوع متدی میتواند به آن نسبت داده شود:
public delegate void Callback(string message);
این delegate میتواند به هر متدی متصل شود که یک پارامتر از نوع string دریافت کند و مقدار بازگشتی نداشته باشد.
پس از تعریف delegate، میتوان یک نمونه از آن ایجاد کرد و یک متد سازگار را به آن نسبت داد.
static void DelegateMethod(string message)
{
Console.WriteLine(message);
}
Callback handler = DelegateMethod;
در این مثال، متد DelegateMethod به delegate متصل شده است. اکنون میتوان delegate را مانند یک متد فراخوانی کرد.
handler("Hello World");یکی از کاربردهای مهم delegate استفاده از آن بهعنوان callback است. در این حالت، delegate بهعنوان پارامتر به یک متد دیگر ارسال میشود.
static void MethodWithCallback(int a, int b, Callback callback)
{
callback("Result: " + (a + b));
}
متد بالا بدون اطلاع از جزئیات متد callback، آن را در زمان مناسب اجرا میکند.
Delegateها میتوانند چندین متد را بهصورت همزمان نگه دارند. به این نوع delegate، multicast delegate گفته میشود.
Callback handler = DelegateMethod;
handler += AnotherMethod;
در این حالت، هنگام فراخوانی delegate، هر دو متد اجرا میشوند.
دلیگیتها اشیاء هستند و میتوان آنها را ذخیره کرد، به متدها ارسال کرد یا در propertyها استفاده کرد. همچنین eventها در C# بر پایه دdelegate ساخته میشوند و از همین سازوکار برای اطلاعرسانی استفاده میکنند.
🔗 مطلب کامل را در این لینک میتوانید مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
کانال تلگرام:
@SoftwarePhilosophy
______