Hlboká kópia

Autor: Lewis Jackson
Dátum Stvorenia: 8 Smieť 2021
Dátum Aktualizácie: 25 V Júni 2024
Anonim
Hlboká kópia - Technológie
Hlboká kópia - Technológie

Obsah

Definícia - Čo znamená Deep Copy?

Hlboká kópia v C # označuje techniku, pomocou ktorej sa vytvára kópia objektu tak, že obsahuje kópie členov inštancie a objektov, na ktoré odkazujú referenčné členy.

Hlboká kópia je určená na skopírovanie všetkých prvkov objektu, ktoré zahŕňajú priamo odkazované prvky (typu hodnoty) a nepriamo odkazované prvky referenčného typu, ktorý drží odkaz (ukazovateľ), do pamäťového miesta, ktoré obsahuje dáta, skôr ako obsahuje samotných údajov. Hlboká kópia sa používa v scenároch, keď sa vytvorí nová kópia (klon) bez odkazu na pôvodné údaje.


Úvod do programu Microsoft Azure a Microsoft Cloud V tejto príručke sa dozviete, o čom všetko je cloud computing a ako vám môže Microsoft Azure pomôcť migrovať a podnikať z cloudu.

Techopedia vysvetľuje hĺbkovú kópiu

Hĺbková kópia sa líši od plytkej kópie spôsobom kopírovania členov referenčného typu objektu. Pri kopírovaní členov poľa typu hodnoty v oboch prípadoch sa vykoná bit-by-bitová kópia poľa. Pri kopírovaní polí referenčného typu zahŕňa plytká kópia kopírovanie iba odkazu, zatiaľ čo pri hĺbkovej kópii sa vykoná nová kópia uvedeného objektu.

Hĺbkovú kópiu je možné ilustrovať na príklade tak, že sa vezme do úvahy zamestnanecký objekt, ktorý má AddressInfo ako typ referenčného typu spolu s ostatnými členmi hodnotového typu. Hĺbková kópia zamestnanca vytvára nový objekt, zamestnanec 2, ktorého členovia sú typu hodnoty rovným zamestnancovi, ale odkazuje na nový objekt AddressInfo2, ktorý je kópiou adresy AddressInfo.

Hĺbkovú kópiu je možné implementovať pomocou ktorejkoľvek z nasledujúcich metód:


  • Konštruktor kópie triedy sa môže implementovať s potrebnou logikou na kopírovanie členov typov hodnôt a referenčných (po správnom pridelení pamäte) typov. Táto metóda je únavná a náchylná na chyby.
  • Metóda System.Object.MemberwiseClone sa môže použiť na kopírovanie nestatických členov typu hodnoty.Kópie objektov referenčného typu sa môžu vytvárať a priraďovať s rovnakou sadou hodnôt ako originál
  • Objekt, ktorý musí byť skopírovaný do hĺbky, môže byť serializovaný a de-serializovaný do nového objektu jeho obnovením. Táto metóda je automatizovaná a nevyžaduje zmeny kódu pre úpravy v objektoch objektov, ale je pomalšia ako iné metódy a vyžaduje, aby bol klonovaný objekt serializovateľný.
  • Odraz s rekurziou sa môže použiť na získanie plytkej kópie, kedy sa môže pridať ďalší kód potrebný na hlbokú kópiu. Táto metóda je automatizovaná a nevyžaduje žiadne zmeny kódu pre žiadne pridávanie alebo odstraňovanie polí v objekte. V prostredí čiastočnej dôveryhodnosti je pomalší
  • Môže sa použiť prechodný jazykový kód, ktorý je rýchlejší, ale má za následok menšiu čitateľnosť kódu a náročnú údržbu

Implementácia hĺbkovej kópie:


  • Objekt musí byť dobre definovaný a nemôže byť svojvoľný
  • Vlastnosti objektu sa nebudú brať do úvahy
  • Klonovanie sa musí automatizovať pomocou spravodajských informácií pre špeciálne prípady (napríklad objekty obsahujúce nespravované odkazy).