الفرق بين التعريف باستخدام overridde و new
Friday, August 15, 2008 | Labels: C#, Tips And Tricks, VB.net | |من المبادئ العامة في ال OOP استخدام مفهوم ال override ، في برامجك من خلال .net يمكنك تحديد الدالة لتكون قابلة لعمل override لها لاحقاً بالشكل التالي :
C#:
public class Base { public virtual void SomeMethod() { } } |
vb.net:
Public Class Base Public Overridable Sub SomeMethod() End Sub End Class |
ومن ثم لعمل override لهذه الدالة في فئة Class آخر نقوم بكتابة الكود التالي :
C#:
public class Derived : Base { public override void SomeMethod() { } } |
vb.net:
Public Class Derived Inherits Base Public Overloads Overrides Sub SomeMethod() End Sub End Class |
في هذه الحالة لو قمنا بتعريف نسخة من الفئة الأولى Base وقمنا بعملها من النوع Derived فسيتم تنفيذ الدالة الموجودة في Derived مباشرة :
C#:
Base b = new Derived(); |
vb.net:
Dim b As Base = New Derived() b.SomeMethod() |
التعريف باستخدام new أو Shadows :
اما لو قمنا بتعريف ال override باستخدام new أو Shadows في vb.net فكل ما سيحدث هو عملية اخفاء مؤقت hide ، لذا فإن الأمر التالي مثلاً :
C#:
public class Base public class Derived : Base Base b = new Derived(); |
vb.net:
Public Class Base Public Class Derived Dim b As Base = New Derived() |
سوف يقوم باستدعاء الدالة الأولى في السطر الثالث ، فيما يقوم باستدعاء الدالة الثانية فقط في السطر الرابع .
المصدر :
http://blogs.msdn.com/csharpfaq/archive/2004/03/12/88453.aspx