تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Tips and tricks - رقم 2 - المعامل Equals والمعامل Clone
#2

في الجزء الاول من درسنا السابق قمنا بكتابة الكود التالي :


كود :
[FONT=Tahoma]Car x = new Car();[/FONT]

[FONT=Tahoma]x.carNumber=1[/FONT]
[FONT=Tahoma]Car y=x;[/FONT]

[FONT=Tahoma]Console.WriteLine (x==y);[/FONT]
لو كنت تظن ان المتغير y يحتوي على نسخة من car يمكنك التعديل عليها فأنت مخطا ، إذ ان المتغير x و y يشيرون لنفس المتغير ، وبالتالي فأي تعديل في احدهما سيتسبب في تعديل للآخر ، يمكنك التأكد من ذلك من خلال كود مثل التالي :


كود :
[color=#2b91af][COLOR=#2b91af][FONT=Tahoma]Car[/FONT][/color][FONT=Tahoma][color=#000000] x = [/color][color=#0000ff]new[/color][color=#2b91af]Car[/color][color=#000000]();[/color][/FONT]
[color=#2b91af][FONT=Tahoma]Car[/FONT][/color][FONT=Tahoma][color=#000000] y = x;[/color][/FONT]

[FONT=Tahoma]x.carNumber=1;[/FONT]
[FONT=Tahoma]y.carNumber =2;[/FONT]

[color=#2b91af][FONT=Tahoma]Console[/FONT][/color][FONT=Tahoma][color=#000000].WriteLine (x.carNumber);[/color][/FONT]
[color=#2b91af][FONT=Tahoma]Console[/FONT][/color][FONT=Tahoma][color=#000000].ReadKey();[/color][/FONT]

[/COLOR]
النتيجة ستكون 2 ، لإن التعديل في y نتج عنه تعديل مباشرة في x .

لكن ماذا لو كنا نرغب في عمل نسخة جديدة من المتغير ؟
في هذه الحالة نستخدم مبدأ Clone بالشكل التالي :


كود :
[color=#2b91af][FONT=Tahoma]Car[/FONT][/color][FONT=Tahoma] doCopy([color=#2b91af]Car[/color] c1)[/FONT]
[FONT=Tahoma]{[/FONT]
[FONT=Tahoma][color=#2b91af]Car[/color] newCar = [color=#0000ff]new[/color] [color=#2b91af]Car[/color]();[/FONT]
[FONT=Tahoma]newCar.carNumber=c1.carNumber;[/FONT]
[color=#008000][FONT=Tahoma]// [/FONT][/color]
[color=#008000][FONT=Tahoma]//[/FONT][/color]
[FONT=Tahoma][color=#0000ff]return[/color] newCar;[/FONT]
[FONT=Tahoma]}[/FONT]
في كثير من العناصر الاساسية تجد الدالة Clone موجودة بصورة افتراضية ، اي كلاس مشتق من الواجهة ICloneaple ستجد هذه الدالة جاهزة للاستخدام مباشرة، لو كنت انت من تقوم ببرمجة الكلاس وقمت باشتقاقه من الفئة السابقة فستجد الدالة Clone موجودة لتقوم ببرمجتها بحيث يكون الكلاس بك على المعايير القياسية ، حيث يستطيع اي مستخدم لفئتك من عمل Clone لها مباشرة .

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


الردود في هذا الموضوع
Tips and tricks - رقم 2 - المعامل Equals والمعامل Clone - بواسطة Raggi Tech - 01-10-12, 07:43 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Tips for clean code #3 Sajad 3 2,923 25-11-17, 12:35 AM
آخر رد: قاسم
  Tips for clean code #2 Sajad 1 2,447 21-11-17, 05:42 PM
آخر رد: قاسم
  Tips for clean code #1 Sajad 2 2,670 06-11-17, 03:07 AM
آخر رد: قاسم
  Tips and tricks - مقدمة RaggiTech 1 2,482 14-10-12, 03:06 PM
آخر رد: RaggiTech
  Tips and Tricks : الفرق بين const و static readonly RaggiTech 0 3,544 14-10-12, 03:05 PM
آخر رد: RaggiTech
  Tips and tricks - رقم 1 - StringBuilder RaggiTech 0 2,485 01-10-12, 07:39 PM
آخر رد: RaggiTech

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


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