Tartalom
- Meghatározás - Mit jelent a mély másolás?
- 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
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.