TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2367 2.13K
دلیگیت (delegate)

#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

______
Docs Using Delegates - C# Learn how to use delegates. Delegates are an object-oriented, type safe, and secure type that safely encapsulates a method.
  • 👍 3
  • ❤ 1
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Sep 5, 2026آشنایی با Attributeها در سی‌شارپ در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاع…
  6. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →