
**السلام عليكم ورحمة الله وبركاته**
تحية عطرة لكل رواد المنتدى الكرام وطاقم اشرافه الفاضل ...،

اليوم اتيكم بدرس جديد حول الـ #C والذي هو نوعا ما امتداد للدرس السابق (Delegate) ، لاهمية المفهوم قررت التعمق اكثر في الحديث عنه وعن امكانياته ...
الى العمل اذا لنرى مايزال لدينا للتحدث عنه بخصوص السفير ،

مرة اخرى اريد الاشارة انه اذا لم تفهم سطر من هذا الموضوع فلاتخف وواصل القراءة ثم عد الى ذاك السطر فيما بعد وستفهمه بسهولة ان شاء الله
اذا الى صلب الموضوع في هذا الدرس سنتحدث عن الـ Multicast وهو بكل بساطة انه بامكان سفيرنا ان يشير الى عديد الدالات بدل دالة واحدة كما راينا في الدرس السابق ، وللتحدث عن هذه الخاصية سنعود لنحسن في الكود الذي استعملناه في الدرس السابق :

هنا نلاحظ داخل دالة DemoSort انني بدات بصناعة سفير والذي جعلته يؤشر الى دالة الترتيب التصاعدي ثم باستعمال += اضفت اليه دالة الترتيب التنازلي ، ماسيحصل عند استدعاء هذا السفير هو كاننا قمنا باستدعاء كلا الدالتين ، كما توضح الصورة التالية :

شيء رائع صح ؟ 
الان دعنا نمر لشيء اخر ، الاوهو "السفراء العامين" generic delegates ، صحيح ان اسم يبدو مبهم قليل لكن تاكدوا انها ادوات جيدة للغاية ، تعالوا نتعرف عليها ،
الى حد الان كل مرة نريد استعمال سفير وجب علينا "صناعة نوع جديد" باستخدام كلة delegate ، وهنا بالتحديد تاتي اهمية "السفراء العامين" وهما Func و Action ،
Action هو سفير بامكانه الاشارة الى دالة لاتعيد شيئا ويقبل 16 نوعا مختلفا ، يعني لو اردنا استعماله في كودنا السابق النتيجة ستكون كالاتي :

لاحظوا الفرق هو اننا قمنا باضافة عامل <[]Action<int كذلك قمنا بحذف السطر "المفتاح" المشار اليه في الصورة التالية :

في الحقيقة هو ان مافعلناه هو كاننا قمنا بصناهة سفير لايعيد شيء وياخذ جدول اعداد كعامل ، واذا مثلا دالتنا تاخذ عاملين كل ماعلينا فعله هو اضافة نوع العامل الجديد الى السفير مثلا هكذا <Action<int[], string
لكن عندما تكون دالتنا تعيد نتيجة ، عندها نستعمل <Func<T مع العلم هنا ان العامل العام الاخير سيكون نتيجة الاعادة ، هذا مثال بسيط للشرح :

هنا في دالة Calcul نستعمل سفير Func لنبين ان الدالة تاخذ عددين int وتعيد عدد double ، واذا حاولنا استعمالها هكذا :

ستكون النتيجة كما هو متوقع هكذا :

الى هنا ينتهي درس اليوم ، وكما قلت لكم اذا لم تفهموا جزء من هذا الدرس فقط اعيدوا القراءة وان شاء الله تفهموه 

ارجو ان الدرس كان مفيد واذا كان لكم اي استفسار فكلي اذان صاغية ،
كذلك لن تنسوا ان تضعوا ردود او تراسلني بخصوص الدروس المقبلة وماتريد تعلمه حول الـ #C
الى اللقاء في الدرس القادم ،
مع تحياتــــــ ..،
