العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 02-25-2010, 02:54 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الثامن والثلاثون : Lambda Expressions دورة .net 2008

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

كنا قد تحدثنا في موضوع سابق عن Anonymous Methods التي تمكننا من كتابة كود الدالة في مكان استدعاءها ما دمنا لن نستدعيها سوى مرة واحدة فقط ، لنفترض مصفوفة نقوم فيها بالبحث عن الأعداد التي تقبل القسمة على 2 :

C#:
كود PHP:
static void TraditionalDelegateSyntax()
{
List<
int> list = new List<int>();
list.
AddRange(new int[] { 20148944 });
Predicate<intcallback = new Predicate<int>(IsEvenNumber);
List<
intevenNumbers = list.FindAll(callback);
Console.WriteLine("Here are your even numbers:");
foreach (
int evenNumber in evenNumbers)
{
Console.Write("{0}\t"evenNumber);
}

}

static 
bool IsEvenNumber(int i)
{
return (
2) == 0;

مع استخدامنا لل Anonymous Methods من C# 2008 اصبح باستطاعتنا كتابتها بالشكل التالي كما تعرف :

C#:
كود PHP:
List<int> list = new List<int>();
list.
AddRange(new int[] { 20148944 });

List<
intevenNumbers = list.FindAll(delegate(int i)
{ return (
2) == 0; } );
Console.WriteLine("Here are your even numbers:");
foreach (
int evenNumber in evenNumbers)
{
Console.Write("{0}\t"evenNumber);

الجديد في .net 2008 هو استخدام ما يعرف باسم Lambda Expressions ، والتي يمكن كتابتها بالشكل التالي :
كود PHP:
=> f(X
لذا ستكون الدالة الخاصة بنا والتي تعيد True في حالة i%2==0 بالشكل التالي :
كود PHP:
(int i) => (2) == 0
حيث ان ال i هي البارميتر ، ونوعه int ، يمكنك حتى الاستغناء عن تعريف نوع البارميتر لإن Lambda سوف تتعرف عليه تلقائياً ، لذا سيكون الكود الكامل بالشكل التالي :
C#:
كود PHP:
 
List<int> list = new List<int>();
list.
AddRange(new int[] { 20148944 });
List<
intevenNumbers = list.FindAll(=> (2) == 0);
Console.WriteLine("Here are your even numbers:");
foreach (
int evenNumber in evenNumbers)
{
Console.Write("{0}\t"evenNumber);

*** لم استطع تحويل الأكواد إلى vb.net ، لذا اكتفي بأن احيلك لهذا الدرس للأستاذ محمد سامر سلو :
http://vb4arab.com/vb/showthread.php?t=7069

return value :


يمكننا ليس فقط اعادة قيمة واحدة أو true , false فقط ، يمكنك الاطلاع على المثال التالي :

كود PHP:
List<intevenNumbers = list.FindAll((i) =>
{
Console.WriteLine("value of i is currently: {0}"i);
bool isEven = ((2) == 0);
return 
isEven;
}); 
ايضاً يمكننا تمرير اكثر من بارميتر ، وذلك حسب الدالة ...


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الثالث والثلاثون : ال Events دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-25-2010 02:40 PM
الدرس الثاني والثلاثون : ال Delegates دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-25-2010 02:37 PM
الدرس الواحد والثلاثون : ال Generic دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-25-2010 02:30 PM
الدرس الثامن والعشرون : ICloneable interface دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-24-2010 02:22 PM
الدرس الثامن عشر : معرفات الوصول Access Modifer دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-19-2010 08:18 PM

استضافة الحياة

الساعة الآن 10:02 AM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz