محو الأمية_2 About Delegate - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176) +--- الموضوع : محو الأمية_2 About Delegate (/showthread.php?tid=13288) |
محو الأمية_2 About Delegate - أبو عمر - 19-09-15 السلام عليكم
ما الفرق بين PHP كود : using System; , بين استخدام الفنكشن Delegate PHP كود : using System; النتسجة في الحالتين Hello from Marsowl مع العلم ان النتيجة هي اياها وبنظرة فيزيائية للكود الاول اسرع اللي فهمته من مقطع فيديو انها مثل صمام امان استحملوني شوي بس RE: محو الأمية_2 About Delegate - الشاكي لله - 20-09-15 ليس هكذا يتم استخدام الdelegate الdelegate هو مايسمى بالمصطلح القديم (call back) بمعنى "اتصل فيني لما تكمل شغلك" الان متى نستخدم الdelegate ؟ مثال: قمت بانشاء ملف dll منفصل عن برنامجك ، وهذا ملف الdll يقوم بضغط الملفات (archiving) بالطبع عملية ضغط الملفات تاخذ وقت صح ؟ الان ، انت في حاجة الى برنامج (application) ليقوم باستدعاء دوال ملف الdll لنفرض انه في ملف الdll توجد دالة باسم StartArchive بالطبع يمكنك اضافة مرجع واستدعاء الدالة مباشرة الدالة ستتنفذ وستاخذ وقت ، ولكن عندما تنتهي من عملية ضغط الملفات ـ، من سيخبرك انها انتهت من عملها ؟؟ يعني لنفرض انك تريد اظهار msgbox بعد عملية الانتهاء من الضغط ، ولكن لا يمكنك معرفة متى ستنتهي الدالة StartArchive من عملها ! هنا يمكنك استخدام الdelegate ليقوم باعلامك ان الدالة StartArchive انتهت من عملها كيف يقوم باعلامك ؟؟ الdelegate ببساطة ماهو الا مؤشر لدالة موجودة في الرام ، طبعا مشكلة مبرمجي البيسك انهم مايعرفون ويش هو المؤشر ، ولكن بمعنى اخر ، الdelegate هو object تقوم بااعطائه اسم دالة معينة مثلا (ArchivingCompleted) ، ثم تقوم بتمرير هذا الdelegate الى الدالة StartArchive التي ستأخذ وقتها في ضغط الملفات وعندما تنتهي من عملية الضغط ، ستقوم الدالة (الي هي StartArchive ) باستدعاء الدالة ArchivingCompleted الموجودة في الapplication ، وطبعا تم ذلك بسبب عملية الdelegate فكما رايت الdelegate جعلتنا نستدعي دالة معينة في application اخر ، وهذا الغرض الاساسي من الdelegate --------------------------------- في النهاية مثال بالاكواد للجملة المفيدة الي فوق ملف dll يحتوي على دالة startArchive التي تقوم بضغط الملفات :- PHP كود : class Vb4arbRAR الان في الapplication (سواء console او winform او اي شيئ اخر) سنقوم باستدعاء الدالة StartArchive من الdll وعندما تنتهي سيتم استدعاء دالتنا ArchivingCompleted: PHP كود : public partial class Form1 : Form خلاص الكود مبسط ومفهوم 1000 بالمئة اعتقد . --- طبعا لاحقا تطور مفهوم الdelegate اكثر وظهر عندنا مفهوم الevent (الاحداث) تقدر تطلع على الفرق بينهم في قوقل (delegate vs events ) تحياتي والا اللقاء في محو الامية 3 خخخخ RE: محو الأمية_2 About Delegate - أبو عمر - 20-09-15 يعطيك العافية شرح جدا ممتاز واعذرني انا لازلت في console write read اصحاب البيسك كانوا يستعينون بدوال API في مثل المثال اللي ذكرته ما اخفي عليك محرر الشارب متعب بحساسيته لحالة الحروف اشكر لك مرورك ولا تحرمني ملاحظاتك RE: محو الأمية_2 About Delegate - الشاكي لله - 20-09-15 ^ اللغة نفسها صممت حساسة لحالة الاحرف ـ فلا حيلة المحرر |