المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الثامن والعشرون : ICloneable interface دورة .net 2008


khaledbelal
02-24-2010, 02:22 PM
الدرس الثامن والعشرون : ICloneable interface
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

نواصل اليوم التعرف على الواجهات الشهيرة ، دورنا في هذا الدرس التعرف على ICloneable .
عملية ال clone يقصد بها عملية النسخ للكائن ، بمعنى اننا عندما نكتب الكود التالي :
c#:

int x=5;
int y=x;


vb.net:

Dim x As Integer = 5
Dim y As Integer = x



فإننا فعلياً نقوم بنقل قيمة x إلى y ، ولكن في حالة تعاملنا مع الفئات بالشكل التالي :

c#:

car x=new car("BMW");
car y = x;


vb.net:

Dim x As New car("BMW")
Dim y As car = x


في الواقع ان قيمة x لا تنتقل إلى y ، بل إن y يصبح يشير إلى المكان الذي فيه قيمة x ، ولذا فإن اي تعديل في قيمة x سيعدل قيمة y والعكس بالعكس . يمكنك مراجعة الدرس التالي لتفهم هذه النقطة بوضوح :
http://vb4arab.com/vb/showthread.php?t=10209

من هنا كانت عملية ال clone من اجل عمل نسخة جديدة في القيمة ووضعها في المتغير الآخر .

الواجهة ICloneable التي تحتوي على الدالة clone ،يمكن استخدامها لهذا الغرض ، حيث يمكننا كتابة كود كالتالي :

c#:

public object Clone()
{ return new car(this.carName); }


vb.net:

Public Function Clone() As Object
Return New car(Me.carName)
End Function


الآن اصبح بامكانك عمل نسخة جديدة باستخدام clone بالشكل التالي :
C#:

car x=new car("BMW");
car y=(car)x.Clone();


vb.net:

Dim x As New car("BMW")
Dim y As car = DirectCast(x.Clone(), car)


والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .