تفاوت بین Delegate و Event در سی شارپ چیست؟
با سلام و درود و خسته نباشید
دوستان من یک تستی میکردم و داشتم بحث Delegate مرور میکردم بعد که رفتم سراغ Event دیدم همان کار رو که باید Delegate هم میتونستم انجام بدم. پس مزیت و معایب و تفاوت این دو چیست؟
مثلا قطعه کد ساده زیر رو نوشتم و در مثال زیر کاری که دیدم بیشتر با Event انجام میدهند الان با Delegate انجام دادم. و ما میتونیم یک event رو به راحتی با as به delegate تبدیل و همان استفاده رو ازش ببریم.
کد:
using System;
namespace DelegateTest
{
public delegate int WorkPerformedHandler(int hour, WorkType workType);
public enum WorkType
{
GoToMeeting,
GoToWork,
Break
};
class Program
{
static int WorkdPerformed1(int h, WorkType type)
{
Console.WriteLine($"ONE - Hour is {h} - Type is {type}");
return h + 10;
}
static int WorkdPerformed2(int h , WorkType type)
{
Console.WriteLine($"TWO - Hour is {h} - Type is {type}");
return h + 20;
}
static int DoWork(WorkPerformedHandler del)
{
return del(10, WorkType.GoToMeeting);
}
static void Main(string[] args)
{
WorkPerformedHandler del1 = new WorkPerformedHandler(WorkdPerformed1);
WorkPerformedHandler del2 = new WorkPerformedHandler(WorkdPerformed2);
del1 += del2;
int z = DoWork(del1);
Console.WriteLine(z);
}
}
}