Object MemberwiseClone Method - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : Object MemberwiseClone Method (/showthread.php?tid=13454) |
Object MemberwiseClone Method - silverlight - 06-10-15 السلام عليكم ورجمة الله وبركاته الكلاس Object هو كلاس يدعم جميع الكلاسات التي يتم كتابتها في الدوت نت أو بمعني أخر هذا الكلاس هو الأساس لكل الكلاسات الموجودة في الدوت نت اليوم كنت احاول ان اكتب كلاس لأخذ صورة كاملة من سطح المكتب و تحويلها الي صورة شفافة و كنت أريد أن أنسخ هذه الصورة او بمعني أدق يكون لدي إمكانية الحصول علي نسخة من هذا الصورة قبل التعديل عليها لذلك أردت للكلاس الخاص بي أن يدعم ICloneable Intefrace جميعكم سوف يلاحظون وعند كتابة أي كلاس جديد نجد ان الكلاس يحتوي علي بعض الدوال و الطرق التي تكون جزء من الكود الخاص بنا و من ضمن هذا الطرق و الدوال هناك دالة اسمها MemberwiseClone و في واقع الأمر تلك أول مرة أحاول فيها أن أفهم هذه الدالة و الهدف منها و كيفية الاستفادة منها و لقد كان من الطبيعي أن ألجا لموقع مايكروسوفت لأقرأ عن الموضوع وهناك وجدت مثالا بسيطا لتوضيح كيفية الاستفادة من هذه الدالة و الهدف من هذا الدالة يتلخص في اننا و باستخدامها نستطيع أن نأخذ نسخة Copy من الكلاس ولتوضيح الأمر قليلا لنفرض أننا نريد تعريف متغير يعبر عن أي كلاس شاملا البيانات الموجودة فيه ثم لنفرض اننا نريد نسخة أخري من هذا الكلاس للتعديل عليها ثم استخدامها بشكل اخر و كل ذلك بدون تعريف متغير جديد من الكلاس و بدون أن تتأثر اليبانات الموجودة في المتغير الأصلي و لمحاولة فهم الأمر بشكل جيد أخذت الكود الموجود في موقع مايكروسوفت و أعدت كتابته كما هو ثم بعد ذلك أعدت صياغته بشكل مختلف قليلا حتي يتضح لي الأمر تماماو الكود التالي يوضح الأمر: كود : Public Class Person كود : Public Class PersonID و الكود التالي يوضح كيفية تعريف متغير عن الكلاس ثم التعديل في بياناته ثم استخدامها مرة أخري كود : Public Class Form1 لينك المرجع في المرفقات يوجد نسخة من الكود اعلاه RE: Object MemberwiseClone Method - الشاكي لله - 06-10-15 موضوع رائع جدا اخوي سيلفرلايت بالفعل نسخ الاوبجكت في حالات كثيرة يكون شي مفيد جدا لكن ماذا عن الstrcut ؟ يقولون ان الstruct هو value type اي يخزن في المكدسة فمككن (نظريا ليس هناك دليل على كلامي ) انه ممكن نسخ اوبجكت الstruct بهذه الطريقة البدائية (newcopy = orginal) PHP كود : struct Wallet ماذا تتوقع اخي سيلفاريلايت هل ممكن نطلق على هذه العملية clone ؟ RE: Object MemberwiseClone Method - أبو عمر - 06-10-15 ممتاز وللتعرف على مزيد من وظائف نسخ الكائنات https://en.wikipedia.org/wiki/Object_copying#Methods_of_copying لكني اتساءل عن Effects على موارد النظام في مثل هذه العمليات خصوصا مع الكائنات الكبيرة تأمل مثلا Dynamic Class Object https://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject(v=vs.110).aspx فأيّ من الوظائف ستكون في المجمل أفضل من الاخرى ؟! اشكر لك طرح هذا الموضوع لم اتوقع مشاهدته في منتدى عربي للأمانة الحمدلله نحن معكم نتعلم الكثر RE: Object MemberwiseClone Method - silverlight - 07-10-15 الأخ الفاضل الشاكي لله أعتقد انه لا يوجد شئ بدائي او عدم بدائي في كتابة الكود المهم في الأمر ان الكود يخدم احتياجاتك باي طريقة ممكنة و الأهم إن الكود يتم كتابته بشكل صحيح ففي الكود الخاص بك أنت قمت بتعريف متغير يعبر عن Structure ثم اعطيت قيمة لأحد عناصره ثم قمت بتعريف متغير أخر يرمز لنفس Structure ثم قمت بمساواة الاثنان معا عموما و علي ما اعتقد ما تم استخدامه مع Class يمكن استخدامه مع Structure ففي النهاية الاثنان اساسهم واحد و الفارق بينهما يكمن فقط في نوعية البيانات او في DataTypes لكل منهما لكن فكرة الحصول علي نسخة منهما ستظل واحدة مع الوضع ف الاعتبار نوعية البيانات طبقا لما شرحته مايكروسوفت في المثال الخاص بها خاصة اذا كانت البيانات من النوع Reference Type كود : Public Structure Wallet أو يمكن كتابة الكود بشكل مباشر كالأتي: كود : Public Structure Wallet عموما انا الأمر لفت انتباهي ليس إلا لذلك اردت الكتابة عنه ربما يستفيد منه الأخرون الأخ الفاضل أبو عمر بما ان DynamicObject Class أساسه Object Class فنفس الاسلوب يسري عليه لكن نأثير هذا علي موارد النظام ف وحده الله اعلم لكني لا أعتقد إن أخذ نسخة من كلاس ما سيكون له تأثير ما علي موارد نظام التشغيل كمثال أري أن الفكرة هنا ممكن الاستفادة منها في برامج الداتا بيز مثلا للتعديل علي احد البيانات و في حالتي انا شخصيا و تحديدا ف الكلاس الذي اقوم بكتابته فهي مفيدة لي لتحديد اي تغييرات تحدث بين أول صورة اخذتها لسطح المكتب عن طريق مقارنة اي صورة جديدة بها لمعرفة هل الصورة علي سطح المكتب تتغير بسبب تحريك فورم او فتح برنامج اخر |