"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > افتراضي/تجاوز مقابل جديد في C#: متى يجب أن أستخدم الكلمة الرئيسية للطريقة التي تتجاوزها؟

افتراضي/تجاوز مقابل جديد في C#: متى يجب أن أستخدم الكلمة الرئيسية للطريقة التي تتجاوزها؟

نشر في 2025-02-06
تصفح:194

Virtual/Override vs. New in C#: When Should I Use Which Keyword for Method Overriding?

الكلمات الرئيسية الافتراضية/التجاوزية والكلمات الرئيسية الجديدة في C#: متى تستخدم أي كلمة رئيسية لإعادة كتابة طريقة؟

عند تحديد الأساليب في الفئات الأساسية ، غالبًا ما يواجه المبرمجون مشكلة ما إذا كان سيتم استخدام الكلمات الرئيسية "الظاهرية" أو "الجديدة". يؤثر هذا القرار بشكل كبير على سلوك إعادة كتابة الطريقة في الفصول المشتقة.

تجاوز افتراضي

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

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

كلمة رئيسية جديدة

بدلاً من ذلك ، تعلن الكلمة "الجديدة" في طريقة الفئة المشتقة عن طريقة جديدة تخفي الطرق الموروثة بنفس الاسم. عند استخدامها ، تحل الطريقة الجديدة محل الأساليب الموروثة في الفئة المشتقة ، وبالتالي تدمير تعدد الأشكال.

عندما تستدعي الفئة المشتقة طريقة معلنة بـ "New" ، فإنها تنفذ الطريقة الجديدة بغض النظر عن نوع المتغير المرجعي الذي يحمل الكائن. هذا يعتبر الربط المبكر ويعوق تعدد الأشكال.

مثال

ضع في اعتبارك مثال الكود التالي:

public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public new bool DoSomething() { return true; }
}

إذا قمت بتعيين مثيل مشتق إلى متغير من قاعدة النوع واتصل dosomething () ، فستكون النتيجة خاطئة إذا كنت تستخدم Virtual/Override ، ولكن إذا كنت تستخدم جديدًا ، فستكون النتيجة صحيحة. هذا يسلط الضوء على الفرق بين الربط المتأخر والربط المبكر.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3