با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی با کلمه کلیدی static در زبان #C آشنا شدید ، در این بخش قصد داریم در رابطه با معرفی Anonymous Method در #C و محدودیت های Anonymous Method در این زبان برنامه نویسی توضیح دهیم.
همانطور که از نام آن پیداست، یک متد بدون نام است. متدهای ناشناس (Anonymous) در #C را می توان با استفاده از کلمه کلیدی delegate تعریف کرد و می توان به یک متغیر از نوع delegate اختصاص داده شود.
1 2 3 4 5 6 7 8 9 10 | public delegate void Print(int value); static void Main(string[] args) { Print print = delegate(int val) { Console.WriteLine("Inside Anonymous method. Value: {0}", val); }; print(100); } |
خروجی :
1 | Inside Anonymous method. Value: 100 |
Anonymous methods ها می توانند به متغیرهایی که در یک تابع بیرونی تعریف شده اند دسترسی پیدا کنند:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public delegate void Print(int value); static void Main(string[] args) { int i = 10; Print prnt = delegate(int val) { val += i; Console.WriteLine("Anonymous method: {0}", val); }; prnt(100); } |
خروجی :
1 | Anonymous method: 110 |
Anonymous methods نیز می توانند به متدهایی منتقل شوند که delegate را به عنوان یک پارامتر پذیرفته است.
در مثال زیر PrintHelperMethod اولین پارامترهای Print delegate را می گیرد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public delegate void Print(int value); class Program { public static void PrintHelperMethod(Print printDel,int val) { val += 10; printDel(val); } static void Main(string[] args) { PrintHelperMethod(delegate(int val) { Console.WriteLine("Anonymous method: {0}", val); }, 100); } } |
خروجی :
1 | Anonymous method: 110 |
Anonymous methods می توانند بعنوان کنترل کننده های رویداد (event handlers) استفاده شوند:
1 2 3 4 | saveButton.Click += delegate(Object o, EventArgs e) { System.Windows.Forms.MessageBox.Show("Save Successfully!"); }; |
#C در نسخه ۳٫۰ خود lambda expression را ارائه نمود که میتواند به عنوان یک anonymous method عمل می کند.
در این بخش در رابطه با Anonymous method ها در زبان #C توضیح دادیم و با آن آشنا شدید ، در بخش بعدی در رابطه با نوع Nullable در این زبان برنامه نویسی توضیح می دهیم.