Delegate Function - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : Delegate Function (/showthread.php?tid=18584) |
Delegate Function - silverlight - 26-12-16 أثناء قراءتي في الرابط التالي و الخاص بموقع مايكروسوفت الرابـــــــــــــــــــــــــط تذكرت و أنا أبتسم أياما قديمة كان مفهوم Delegate Function يمثل غموضا كبيرا بالنسبة لي لكن يوما بعد يوم ومع ازدياد الخبرة قليلا أصبح هذا المفهوم أمر يسيرا لذلك و حين قرأت الموضوع في موقع مايكروسوفت قررت مشاركتكم بعضا من الأفكار التي قد توضح الكيفية في كتابة و استخدام Delegate Function في اي مشروع بشكل عام إن أبسط توضيح لكلمة Delegate Function هي أنها مثلها مثل أي Function أو دالة قد تكتبها من خلال أي كود لذلك إن مجرد فهمك لكيفية كتابة دالة عادية تسترجع منها قيمة معينة فهذا معناه أنك أيضا تفهم Delegate Function و لنأخذ المثال البسييط الموجود في موقع مايركوسوفت كنقطة بداية للأسف أن من يكتبون الأمثلة التوضيحية في موقع مايكروسوفت غالبا وقتهم ضيق أو ربما لأي أسباب أخري فهم لا يوضحون كافة الأمور من خلال كتابة أمثلة كثيرة و مختلفة ..... أو ربما هم فقط يكتبون أي مثال سريع و انتهي الأمر و يتركون المبرمج ليبحث و يقرأ حتي يجد و يكتشف الحلول بنفسه و إسمحوا لي أن أعيد كتابة المثال الخاص بمايكروسوفت بشكل مختلف كيف نقوم بتعريف Delegate Function الكيفية التي تحتاجها لإستدعاء اي Delegate Function هي التي تحدد نوعيتها من حيث ان تكون عبارة عن Public أو Friend او Protected او حتي Private بشكل مبدئي الأفضل استخدامها علي صورة Public Function حتي يتثني لك استدعاؤها من اي مكان وثم بعد ذلك نمرر لها اي متغيرات تريدها و تسترجع منها اي قيمة تريدها و الكود التالي يوضح شكل الدالة PHP كود : Public Delegate Function CompareCallBack(x As Integer, y As Integer) As Boolean لتوضيح الدالة أعلاه هي عبارة عن دالة سنمرر لها متغيران رقميان لا نعلم قيمتهما أي أن القيم الخاصة بهم قد تكون اي رقم و من ثم نقارن بين القيمتان و نسترجع متغير عبارة عن Boolean الأمر الجميل في Delegates بشكل عام انها تسمح لك بتمريرها الي اي كلاس و تسمح لك بتعريفها من خلال استخدم Sub New واسمحوا لي أن أستمر علي نفس نهج المثال الخاص بمايكروسوفت مع التعديل عليه قليلا و من ثم سنكتب الكلاس التالي PHP كود : Public Class OrderingCallBack كما ذكرت فإن الأمر الرائع في Delegates انه يمكن تمريرها كمتغير إلي أي كلاس كما هو واضح في الكلاس أعلاه الكود التالي يوضح كيفية تعريف Delegate Function ثم تمريرها للكلاس و العودة بالنتائج PHP كود : Public Class Form1 أو يمكن كتابة الكود علي الشكل التالي PHP كود : Public Class Form1 السؤال الأهم هل أنا أصلا في حاجة لكتابة الكلاس أعلاه و لماذا لا استخدم Delegate Function مباشرة عموما نحن لا نحتاج للكلاس و يمكننا استخدام Delegate Function مباشرة عن طريق تمرير القيم الي Invoke و الكود التالي يوضح ذلك PHP كود : Public Class Form1 أو يمكن كتابة الكود كالتالي PHP كود : Public Class Form1 أو يمكن كتابة الكود كالتالي أيضا PHP كود : Public Class Form1 أو كالتالي وكما ذكرت مسبقا الجميل في Delegate Function أن لها Constructor اي أن لها Sub New PHP كود : Public Class Form1 أهم شئ في Delegate Function هو تعريفها بوضوح و إعطاؤها اسما مناسبا لا يتكرر من داخل الكود و ايضا ان نمرر لها المتغيرات الصحيحة او نمرر لها الدوال التي لها نفس Signature و المقصود هنا نمرر لها دوالا تشبهها في كل شئ و تختلف عنها في المسمي او يمكننا استخدام Lambada Function في الكود التالي ستجدون بعضا من الأشكال لهذه النوعية من Delegates و لتضعوا في اعتباركم ان مجال استخدام هذه النوعية من الدوال لس له حدود PHP كود : ' Example: 01 لأي استفسارات تتعلق بالموضوع يمكنكم كتابة اي سؤال ترغبون به RE: Delegate Function - ali.alfoly - 26-12-16 جزاك الله خيرا ولي رجاء لو امكن بعد اذن حضرتك ممكن مثال بشكل مختلف او اكبر شوية RE: Delegate Function - مساعدة - 26-12-16 السلام عليكم جزاكم الله خير أخي الكريم RE: Delegate Function - silverlight - 26-12-16 الأخ علي طبعا ممكن أكتب لك أمثلة كثيرة لكن ياريت تعطني فكرة عما يدور في رأسك خاصة ان استخدام Delegate Function يشمل كل شئ و اي شئ RE: Delegate Function - WAEL ABED - 26-12-16 يمكننى ان اتحكم فى برنامج اخر غير برنامجى من خلال هذة الدالة مثلا اغلاقها او اضافة جملة للتكست الموجود مثلا كيف ذلك ؟؟ RE: Delegate Function - silverlight - 26-12-16 تتحكم في برنامجك أنت نعم تقوم باستبدال كلمات و اضافة كلمات لأي كونترول مثل التكست بوكس مثلا داخل برنامجك نعم لنفترض أن Delegate Function موجودة داخل ملف dll نعم يمكن استدعاؤها من الملف و اغلاق برنامجك بشرط ان تكتب الدالة بأسلوب صح تستطيع فقط ان تتحكم في برامج أنت من كتبها أيضا هذه ليست دالة لكنها عبارة عن Pointer لشئ مجهول كما هو موجود في لغة C هذا مثال لكيفية إغلاق الفورم باستخدام Delegates موجود في Assembly مختلف PHP كود : Public Class Form1 RE: Delegate Function - alsouf - 30-10-17 جزاكم الله الف الف خير أخي الكريم |