Mély másolás

Szerző: Lewis Jackson
A Teremtés Dátuma: 8 Lehet 2021
Frissítés Dátuma: 25 Június 2024
Anonim
Mély másolás - Technológia
Mély másolás - Technológia

Tartalom

Meghatározás - Mit jelent a mély másolás?

A mély másolat a C #-ban egy olyan technikára utal, amelyen egy objektum másolata készül, oly módon, hogy tartalmazza mind a példánytagok, mind a referenciatagok által mutatott objektumok másolatait.

A mély másolat célja az objektum összes elemének másolása, amely magában foglalja a közvetlenül hivatkozott elemeket (érték típusú) és a referencia típus közvetett módon hivatkozott elemeit, amelyek referenciát (mutatót) tartanak egy memóriahelyre, amely adatokat, nem pedig a magát az adatot. A mély másolatot olyan helyzetekben használják, amikor új példányt (klónt) hoznak létre az eredeti adatokra való hivatkozás nélkül.


Bevezetés a Microsoft Azure és a Microsoft Cloud | A jelen útmutató során megtanulja, mi szól a felhőalapú számítástechnikából, és hogyan segítheti a Microsoft Azure a felhőből történő migrációt és az üzleti vállalkozás futtatását.

A Techopedia magyarázza a Mély másolatot

A mély másolás abban különbözik a sekély másolástól, hogy az objektum referencia típusának másolása történjen. Az érték típusú mezőtagok másolásakor mindkét esetben a mező bit-bitről történő másolása történik. A referencia típusú mezők másolásakor a sekély másolás csak a referencia másolását foglalja magában, míg a mély másolatban a hivatkozott objektum új példányát hajtják végre.

A mély példányt egy példával szemléltetheti úgy, ha figyelembe vesszük a munkavállalói objektumot, amelynek a hivatkozási típus tagja a AddressInfo, valamint az érték típus többi tagja. Az Employee mély példánya létrehoz egy új objektumot, az Employee2-t, amelynek tagjainak értéke megegyezik a Employee értékkel, de hivatkozik egy új objektumra, a AddressInfo2-re, amely a AddressInfo másolata.

A mély másolat a következő módszerek bármelyikével valósítható meg:


  • Az osztály másoló-kivitelezője megvalósítható a szükséges logikával mind az érték, mind a referencia (megfelelő memória allokáció után) tagok másolásához. Ez a módszer unalmas és hibás.
  • A System.Object.MemberwiseClone módszer használható az értéktípus nem statikus tagjainak másolására.Referencia-típusú objektumok másolatait létrehozhatjuk, és ugyanazzal az értékkészlettel rendelhetjük meg, mint az eredeti
  • Egy objektum, amelyet mélyen lemásolni kell, sorozatba helyezhető, és újratelepíthetővé teheti azt egy új objektumba, helyreállítva. Ez a módszer automatizált, és nem igényel kódváltoztatást az objektumtagok módosításainál, de lassabb, mint más módszerek, és megköveteli a klónozott objektum szerializálhatóságát.
  • A rekurzióval való visszatükrözés felhasználható egy sekély példány elérésére, amelyen a mély másoláshoz szükséges kiegészítő kód hozzáadható. Ez a módszer automatizált, és az objektumok mezőinek hozzáadásához vagy eltávolításához nincs szükség kódváltoztatásra. Ez lassabb, és nem engedélyezett részleges bizalmi környezetben
  • Közbenső nyelvkód használható, ami gyorsabb, de kevesebb kódolhatóságot és nehéz karbantartást eredményez

A mély másolat végrehajtása:


  • Az objektumnak jól definiáltnak kell lennie, és nem lehet önkényes
  • Az objektum tulajdonságait nem vesszük figyelembe
  • A klónozást speciális esetekben (mint például a nem kezelt referenciákat tartalmazó objektumok) az intelligenciával kell automatizálni.