delegate در سی شارپ
سلام دوستان امروز میخواهیم به مبحث delegate در سی شارپ بپردازیم.delegate ها عملکردی مشابه به متغیر ها دارند برا مثال متغیری از نوع string رشته های متنی را در خودت نگه میدارد و delegate ها هم همین کار را انجام می دهند با این تفاوت که متد ها را در خود نگه میدارند.
شکل تعریف delegate ها بصورت زیر میباشد:
{پارامتر های ورودی}{نام} {مقدار برگشتی} delegate {سطح دسترسی}
به مثال زیر توجه کنید:
public delegate int MyDelegate(int num1, int num2);
در مثال بالا ما یک delegate تعریف کردیم که مقدار برگشتی و پارامتر ان int است.حتما به این نکته توجه کنید که فقط میتوانید متدی از این توع یعنی int در این delegate قرار دهیم یعنی اگر delegate با مقدار های string تعریف کردیم متدی که میخواهیم در ان قرار دهیم هم باید همینطور باشد.
تا اینجا ما یک delegate تعریف کردیم اما طریقه استفاده از ان چطور است؟
ابتدا یک متد تعریف میکنیم و برای مثال نام ان را MyMethod قرار دادیم:
static void Main(string[] args)
{
}
public static int MyMethod(int num1, int num2)
{
return num1 + num2;
}
در بالا یک متد ساده برا عملیات جمع نوشتیم.حالا برای استفاده از delegate که قبلا تعریف کردیم به صورت زیر عمل میکنیم تا متد خود را در ان قرار بدیم:
static void Main(string[] args)
{
MyDelegate md = MyMethod;
Console.WriteLine(md(4, 3));
Console.ReadKey();
}
خب همانطور که میبینید MyDelegate را مانند متغیر تعریف کردیم و متد خود را در ان قرار دادیم و در خط بعد ان را فراخوانی کردیم.
Multicast Delegate چیست؟
در ادامه به بررسی Multicast Delegate ها میپردازیم.منظور از Multicast Delegate نگه داری تعداد بیشتر متد در delegate است.خب ایتدا دو متد ساده تعریف میکنیم به صورت زیر :
public static void sum(int num1, int num2)
{
Console.WriteLine(num1 + num2);
}
public static void Sub(int num1, int num2)
{
Console.WriteLine(num1 - num2);
}
سپس delegate را تعریف میکنیم:
public delegate void MyDelegate(int num1, int num2);
حالا به قطعه کد زیر توجه کنید:
class Program
{
static void Main(string[] args)
{
MyDelegate md = Sum;
md += Sub;
md(4, 3);
Console.ReadKey();
}
}
خب همانطور که میبینید مانند قبل متغیر delegate خود را نوشتیم و متد خود یعنی sum را در ان قرار دادیم.سپس در ادامه متد دوم خود یعنی Sub را به ان با =+ اضافه کردیم.به این صورت متغیر delegate ما دو متد را در خود نگه میدارد و اگر متغیر خود را فراخوانی کنیم هر دو متد اجرا خواهند شد و دو عدد برای ما نمایش داده می شوند(اعداد 7 و 1).
امیدوارم از اموزش راضی بوده باشید و برایتان مفید بوده باشد.
موفق باشید..
آموزش برنامه نویسی اندروید |
خداوکیلی اگه فهمیده باشم!!!
بهتره ابتدا با مباحث اولیه مانند متغیر ها و توابع اشنا بشید.
خیلی خوب توضیح دادین ، سایتهای زیادی را گشتم ولی مثالهای ساده و توضیحات روان خیلی قابل فهمش کرده بود . مچکرم .
خواهش می کنم موفق باشید.