***براساس اطلاعات اتحادیه مجازی متا شما عضو هیچ یک از گروههای سازمانی متا نیستید *** لطفا در صورت تمایل برای مشارکت و استفاده بهتر از امکانات متا ، فرم عضویت را پرنمایید*** برای این کار برروی همین نوار یا کلمه عضویت کلیک نمایید ...***


بخشهاي فعال

آخرين ارسالهاي هر بخش در همان بخش وجود دارد براي سهولت دسترسي به آخرين مباحث مورد علاقه ، از آخرين ارسالهاي همان بخش استفاده نماييد

 

بخش آزاد اعتياد حسابداري عمران فلسفه کامپيوتر مديريت خانواده روانشناسي زبان خارجه آمار بورس
بخش آزاد اعتياد حسابداري عمران فلسفه کامپيوتر مديريت خانواده روانشناسي زبان خارجه آمار بورس

نویسنده موضوع: Lambda Expressions چیست ؟  (دفعات بازدید: 1310 بار)

0 کاربر و 1 مهمان درحال دیدن موضوع.

Lambda Expressions چیست ؟
« : نوامبر 29, 2010, 12:46:17 »
+2
ها، خیلی شبیه به Anonymous Methodها (Delegateها) هستند.که در پست قبلی در مورد آن توضیح دادم .در واقع عبارتهای Lambda Expression نوعی مختصرتر و روانتر از نوع Anonymous Method است که در سی شارپ 3 به بعد توسط مایکروسافت ارایه شد .

مهمترین و پرکاربردترین موارد استفاده از این عبارت در linq  است .

پست های قبلی را هم ببینید
http://irmeta.com/meta/index.php/topic,5048.0.html
http://irmeta.com/meta/index.php/topic,5160.0.html

    اکنون سعی می کنیم گام به گام از Anonymous Method به سمت Lambda Expression حرکت کنیم .

 

برای اینکار فرض کنید یک عبارت delegate  داریم ، برای رسیدن به Lambda Expression اقدامات زیر را انجام می دهیم :

ابتدا کلمه delegate  را حذف می کنیم .

اپراتور <= را در بین اعلان پارامترها و بدنه تابع قرار می دهیم . این اپراتوار را goes to   می نامند . شکل زیر دو عبارت را با هم مقایسه می کند .



در شکل بالا دقت کنید تا متوجه شوید چگونه یک عبارت Anonymous Method براحتی تبدیل به یک عبارت Lambda Expression شده است .

 

عبارت بالا هنوز کاملا خلاصه نشده است . باز هم می توان آن را خلاصه تر کرد.

برای اینکار به سورس کد زیر دقت کنید






Le1  این عبارت درست است اما ما در اینجا از کمترین امکان خلاصه سازی استفاده کرده ایم ما در اینجا فقط کلمه delegate   را حذف کردیم و عبارت <= را اضافه کرده ایم

 

Le2   ما در عبارتهای Lambda Expression می توانیم اعلان صریح نوع متغیر (پارامتر ورودی ) را حذف کنیم و اعلان نکنیم مثال حالت دوم را ببینید و فقط آن را در میان پرانتز محصور می کنیم .

 

Le3   در اینجا باز هم فراتر می رویم اینجا علاوه بر حذف اعلان نوع پارامتر ورودی پرانتز را هم می توانیم حذف کنیم

 

Le4   و سرانجام به خلاصه ترین حالت می رسیم که هم اعلان نوع پارامتر ورودی و هم پرانتز و هم آکولادها و هم کلمه کلیدی return  قابل حذف شدن هستند

 

در واقع ما در عبارتهای Lambda Expression ، پارامترهای خودمان را می توانیم بصورت غیر صریح یعنی بدون مشخص کردن نوع آنها ، اعلام کنیم . و اگر متد ما دارای یک خط باشد دیگر نیازی به آکولاد محصور کننده کد نداریم . اما اگر بیش از یک خط باشد باید کد بدنه بین آکولادها باشد

در زیر فرم کلی عبارتهای Lambda Expression را بصورتی کاملا واضح بیان می کنیم .




بر گرفته از کتاب Illustrated C# 2008

لیستی از منابع مفید :
http://msdn.microsoft.com/en-us/library/bb397687.aspx
http://weblogs.asp.net/scottgu/archive/2007/04/08/new-orcas-language-feature-lambda-expressions.aspx
http://www.codeproject.com/KB/cs/explore_lamda_exp.aspx
ما عاشق فهم و ادب ومعرفتیم،
ما خاک قدوم هر چه زیبا صفتیم،
http://alaasabzpoush.blogsky.com/

 

موضوعاتی که ممکن است عنوان یا محتوای آن با این موضوع در یکی از تالارهای متا مرتبط باشد

  موضوع / نویسنده پاسخ ها آخرين ارسال
0 پاسخ ها
381 مشاهده
آخرين ارسال ژوئیه 01, 2010, 16:48:37
توسط امیر شهباززاده
0 پاسخ ها
2054 مشاهده
آخرين ارسال ژوئیه 03, 2010, 13:55:31
توسط امیر شهباززاده
0 پاسخ ها
395 مشاهده
آخرين ارسال ژوئیه 11, 2010, 10:50:02
توسط DELFAN
0 پاسخ ها
312 مشاهده
آخرين ارسال سپتامبر 07, 2010, 10:28:56
توسط A.Ehsani
0 پاسخ ها
519 مشاهده
آخرين ارسال نوامبر 13, 2010, 11:29:35
توسط اکبرزاده
0 پاسخ ها
369 مشاهده
آخرين ارسال نوامبر 15, 2010, 09:00:18
توسط اکبرزاده