[C#] الربط المبكر والمتأخر



Answers

يستخدم C # 3 الربط المبكر.

يضيف C # 4 الربط المتأخر مع الكلمة الرئيسية dynamic . انظر دخول مدونة Chris Burrow حول الموضوع للحصول على التفاصيل.

أما بالنسبة للوسائل الافتراضية مقابل الطرق غير الافتراضية ، فهذه مشكلة مختلفة. إذا قمت باستدعاء string.ToString() ، يرتبط رمز C # إلى الأسلوب object.ToString() الظاهري. لا يتغير رمز المتصل على أساس نوع الكائن. بدلاً من ذلك ، يتم استدعاء الطرق الظاهرية من خلال جدول مؤشرات الدالة. يشير مثيل الكائن إلى تأشير جدول الكائن في أسلوبه ToString() . يحتوي مثيل السلسلة على جدول الأسلوب الظاهري الذي يشير إلى أسلوب ToString() . نعم ، هذا هو تعدد الأشكال. لكنها ليست متأخرة ملزمة.

Question

أحاول الحصول على رأسي عندما يحدث الربط المبكر / المتأخر في C #.

عادة ما تكون الطرق غير الافتراضية مقيدة في وقت مبكر. دائمًا ما تكون الطرق الافتراضية متأخرة في وقت متأخر: حيث يقوم المترجم بإدراج رمز إضافي لحل الطريقة الفعلية للربط في وقت التنفيذ والتحقق من سلامة النوع. لذلك يستخدم تعدد الأشكال الفرعي نوع الربط المتأخر.

طرق الاتصال باستخدام الانعكاس هي مثال على الربط المتأخر. نكتب الكود لتحقيق ذلك على عكس المترجم. (على سبيل المثال استدعاء مكونات COM.)

يدعم VB.NET الربط المتأخر الضمني عندما يكون Option Strict متوقفاً عن التشغيل. كائن متأخّر مرتبط عندما يتم تعيينه إلى متغير تم تعريفه ليكون من نوع الكائن. إدراج المحول البرمجي VB التعليمات البرمجية لربط الأسلوب الصحيح في وقت التنفيذ وللحصول على المكالمات غير صالح. لا يدعم C # هذه الميزة.

هل أنا في الاتجاه الصحيح؟

ماذا عن استدعاء المندوبين واستدعاء طريقة من خلال مرجع الواجهة؟ هل هذا الربط المبكر أو المتأخر؟




وبعبارة بسيطة للغاية ، يحدث الربط المبكر في وقت التجميع ، ويمتلك المترجم المعرفة حول النوع وكل الأعضاء ، ويحدث الربط المتأخر في وقت التشغيل ، ولا يعرف المترجم أي شيء عن النوع وأعضائه. لقد صادفت فيديو ممتاز على يوتيوب يشرح هذه المفاهيم.

http://www.youtube.com/watch?v=s0eIgl5iqqQ&list=PLAC325451207E3105&index=55&feature=plpp_video

http://www.youtube.com/playlist?list=PLAC325451207E3105




في وظيفة قديمة جدا لكنه أراد إضافة المزيد من المعلومات إليها. يتم استخدام الربط المتأخر عندما لا تريد إنشاء كائن في وقت التحويل البرمجي. في C# تستخدم Activator للاتصال بكائن ربط في وقت التشغيل.






Links