نسخة عميقة

مؤلف: Lewis Jackson
تاريخ الخلق: 8 قد 2021
تاريخ التحديث: 25 يونيو 2024
Anonim
Rolling In The Deep - Adele مترجمة عربي
فيديو: Rolling In The Deep - Adele مترجمة عربي

المحتوى

التعريف - ماذا تعني النسخة العميقة؟

تشير النسخة العميقة ، في C # ، إلى تقنية يتم بموجبها إنشاء نسخة من كائن بحيث تحتوي على نسخ من كل من أعضاء المثيل والكائنات التي يشير إليها أعضاء المرجع.

المقصود بالنسخة العميقة هو نسخ جميع عناصر الكائن ، والتي تشمل العناصر المشار إليها مباشرة (نوع القيمة) والعناصر المرجعية غير المباشرة لنوع المرجع الذي يحتفظ بمرجع (مؤشر) إلى موقع ذاكرة يحتوي على بيانات بدلاً من احتوائه على البيانات نفسها. يتم استخدام نسخة عميقة في السيناريوهات حيث يتم إنشاء نسخة جديدة (استنساخ) دون أي إشارة إلى البيانات الأصلية.


مقدمة إلى Microsoft Azure و Microsoft Cloud | من خلال هذا الدليل ، سوف تتعرف على الحوسبة السحابية التي تدور حولها وكيف يمكن أن يساعدك Microsoft Azure على ترحيل عملك وإدارته من السحابة.

يشرح Techopedia نسخة عميقة

تختلف النسخة العميقة عن النسخة الضحلة بالطريقة التي يتم بها نسخ أعضاء نوع المرجع للعنصر. أثناء نسخ أعضاء الحقل من نوع القيمة في كلتا الحالتين ، يتم تنفيذ نسخة بتنسيق حقل. عند نسخ حقول نوع المرجع ، تتضمن النسخة الضحلة نسخ المرجع فقط ، بينما في نسخة عميقة ، يتم تنفيذ نسخة جديدة من الكائن المشار إليه.

يمكن توضيح النسخة العميقة بمثال من خلال النظر في كائن الموظف الذي لديه AddressInfo كعضو في نوع المرجع مع أعضاء آخرين من نوع القيمة. تقوم نسخة عميقة من الموظف بإنشاء كائن جديد ، Employee2 ، مع أعضاء من نوع القيمة يساوي الموظف ولكن يشير إلى كائن جديد ، AddressInfo2 ، وهو نسخة من AddressInfo.

يمكن تنفيذ نسخة عميقة باستخدام أي من الطرق التالية:

  • يمكن تنفيذ مُنشئ نسخ الفئة مع المنطق اللازم لنسخ أعضاء من كلا النوعين وأنواع المرجع (بعد تخصيص الذاكرة المناسبة). هذه الطريقة مملة ومعرضة للخطأ.
  • يمكن استخدام الأسلوب System.Object.MemberwiseClone لنسخ الأعضاء غير المستقلين من نوع القيمة.يمكن إنشاء نسخ من الكائنات من النوع المرجعي وتعيينها مع نفس مجموعة القيم مثل الأصل
  • يمكن إجراء تسلسل لكائن يحتوي على نسخ عميقة وإلغاء تسلسله إلى كائن جديد عن طريق استعادته. هذه الطريقة تلقائية ولا تتطلب تغييرات في التعليمات البرمجية لإجراء تعديلات في أعضاء الكائن ولكنها أبطأ من الطرق الأخرى وتتطلب أن يكون الكائن المستنسخ قابلاً للتسلسل
  • يمكن استخدام الانعكاس بالتكرار للحصول على نسخة ضحلة ، وعند هذه النقطة يمكن إضافة الكود الإضافي اللازم للنسخة العميقة. هذه الطريقة تلقائية ولا تتطلب تغييرات في الكود لأي إضافة أو إزالة للحقول في الكائن. إنه أبطأ وغير مسموح به في بيئة الثقة الجزئية
  • يمكن استخدام رمز اللغة الوسيطة ، وهو أسرع ولكنه يؤدي إلى قراءة رمز أقل وصيانة صعبة

لتنفيذ نسخة عميقة:


  • يجب أن يكون الكائن محددًا جيدًا ولا يمكن أن يكون تعسفيًا
  • لن يتم النظر في خصائص الكائن
  • يجب أن يكون الاستنساخ آليًا بذكاء لحالات خاصة (مثل الكائنات التي تحتوي على مراجع غير مُدارة)