Delegate ها در سی شارپ دقیقا کجا استفاده میشن ؟
من Syntax و مثال های مربوط به دلیگیت رو توی اینترنت و ویدئو های آموزشی و کتاب سی شارپ هم دیدم
چیزی که تقریبا متوجه شدم همون Pointer ها در C++/C هست و مثل یک نماینده برای توابع (متد ها) عمل میکنه , Delegate ها میتونند یک لیستی از توابع در خودش داشته باشه و به جای صدا زدن مستقیم توابع از اونها استفاده کنیم .
اما مشکل اینه که متوجه نمیشم که اگر توی سی شارپ ما Delegate نداشتیم چه مشکلی پیدا میکردیم , یا مثال کاربردی و واقعی اون رو ندیدم ,
چی میشه اگه به جای این کار , میتونیم کد نویسی تمیز داشته باشیم و توابع مون رو توی یک کلاس مشخص داشته باشیم و همون ها رو صدا بزنیم !
چون با اینکه دارم روی یک برنامه حسابداری کار مکینم جایی نیاز به همچین چیزی پیدا نکردم .
توی این مثال یک تابع داریم که عدد رو میگیره و ۱۰ تا بهش اضافه میکنه برمیگردونه , یکبار اون رو به عنوان Delegate پاس کردم , یکبار یک تابع دیگرو مستقیما بهش پاس کردم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
class Program { // Delegate of Sum Function public delegate int Sum_Func_dlg(int Num1); static void Main(string[] args) { #region Using The Delegate as input parameter to a Function(Method) Console.WriteLine("Delegate :"); //Bind Sum Function to it's Delegate Sum_Func_dlg sumfunc = Sum_Function; Console.WriteLine ( Sum_Function(sumfunc(2)) ); #endregion #region Using Function as parameter directly ! Console.WriteLine("Function as Paramter :"); Console.WriteLine ( Sum_Function(Fifty_Function()) ); #endregion Console.ReadKey(); } public static int Sum_Function(int Num1) { return Num1 + 10; } public static int Fifty_Function() { return 50; } } |
بازم متوجه نشدم چه فایده ای داره ؟!
اگر امکانش هست لطفا به زبون خیلی ساده با یک مثال مفهموی از هدف اصلی دیلیگیت ها کمک کنه بتونم این موضوع رو متوجه بشم eli5 (Explain Like I’m Five)
باتشکر
ارسال یک پاسخ
شما برای افزودن نظر جدید یا باید وارد شوید یا اینکه ثبت نام کنید. ورود ثبت نام