PDA

View Full Version : سوال: عبارات لامبدا در سی شارپ



hesamsalehnamadi
دوشنبه 25 دی 1391, 19:18 عصر
سلام..

دوستان کسی یه مرجع در مورد عبارات لامبدا در سی شارپ رو سراغ داره؟؟

plus
دوشنبه 25 دی 1391, 19:51 عصر
والا اولین و آخرین مرجع همیشه MSDN (http://msdn.microsoft.com/en-us/library/bb397687.aspx)میباشه D-:

ordebehesht
دوشنبه 25 دی 1391, 22:56 عصر
http://www.prolearn-vs.com/lambda-ex...s-in-linq.html (http://www.prolearn-vs.com/lambda-expressions-in-linq.html)

اگه میگشتی تو انجمن قبلا بحث شده

shaparak631
پنج شنبه 12 تیر 1393, 23:42 عصر
http://www.prolearn-vs.com/lambda-ex...s-in-linq.html (http://www.prolearn-vs.com/lambda-expressions-in-linq.html)

اگه میگشتی تو انجمن قبلا بحث شده


این لینک کار نمی کنه

shaparak631
جمعه 13 تیر 1393, 00:29 صبح
یک مثال برای اونایی که نمی دونن عبارت لامبدا چیه، فرض کنید شما یک تابع دارین که تعداد اعداد فرد در یک آرایه رو بر میگردونه:


int oddNumbers()
{
int[] numbers = { 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int counter=0;
for (int i = 0; i < numbers.Length; i++)
if (numbers[i] % 2 == 1)
counter++;
return counter;
}


و حالا همین تابع رو با عبارت لامبدا می نویسیم :




int[] numbers = { 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int oddNumbers = numbers.Count(n => n % 2 == 1);



کاربرد عبارت لامبدا در ایجاد توابع بی نام هست. n => n % 2 == 1 در واقع داره کار یک متد رو انجام میده
ولی چون ظاهرش شبیه متد نیست اصطلاحاً بهش توابع بی نام گفته میشه. (Anonymous Methods)

نتیجه این میشه که شما لازم نیست یه تابع جدا بنویسید مثل مثال اول.

عبارتی که سمت چپ علامت <= قرار میگیره نقش پارامتر یا متغیر رو داره و عبارت سمت راست نقش دستورات رو دارن.

یه نمونه دیگه:


(a, b) => (a != b)

Arguments: two variables (a, b)
Returns: bool value (a != b)

Hadoop
جمعه 13 تیر 1393, 00:30 صبح
C# in Depth
,
C# Unleashed

این رو خوب توضیح داده اند مرحله به مرحله