تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثامن والعشرون - ICloneable interface
#1
كاتب الموضوع : أحمد جمال

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


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


كود :
[FONT=Tahoma]int x=5;
int y=x;[/FONT]


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://vb4arb.com/vb/showthread.php?731

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

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

c#:


كود :
[FONT=Tahoma]public object Clone()
{ return new car(this.carName); }[/FONT]


vb.net:

كود :
Public Function Clone() As Object
Return New car(Me.carName)
End Function


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


كود :
[FONT=Tahoma]car x=new car("BMW");
car y=(car)x.Clone();[/FONT]


vb.net:


كود :
Dim x As New car("BMW")
Dim y As car = DirectCast(x.Clone(), car)


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



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم