Tartalomjegyzék:
Meghatározás - Mit jelent a sekély másolás?
A sekély másolás, a C # -ben, egy objektum klónjának létrehozásának folyamata az eredeti objektumhoz hasonló új példány megjelenítésével és a meglévő objektum nem statikus tagjainak a klónba másolásával. Az értéktípus tagjai apránként másolódnak, míg a referencia típus tagjai úgy, hogy a hivatkozott objektum és annak klónja ugyanazon objektumra vonatkozzon.
Általában a sekély másolatot akkor kell használni, ha a teljesítmény egyike a követelményeknek, azzal a feltétellel, hogy az objektum nem lesz mutálva az alkalmazás során. A változatlan adatokat tartalmazó klón átadásával kiküszöbölhető a bármilyen kód általi sérülés lehetősége. A sekély másolás hatékonynak bizonyul, ha az objektumhivatkozások lehetővé teszik az objektumok átadását memóriacím alapján, így a teljes objektumot nem kell lemásolni.
A sekély másolatot tag-példánynak is nevezik.
A Techopedia magyarázza a Sekély Másolatot
A sekély másolás hasonló a mély másoláshoz, amikor az objektum minden egyes tagja hozzá van rendelve egy másik objektumhoz, de ez különbözik a referenciatípus mezőjének másolásának módjától. A sekély másolatoktól eltérően, ahol csak a referenciát másolják, mély másolatban, a hivatkozott objektum új példánya jön létre.
Vegyünk például egy alkalmazott objektumot, amely a személyes adatok részleteit tartalmazza, ideértve a több alkalmazott címeit tároló címobjektumok listáját. Az alkalmazotti objektum sekély másolatának elkészítésével létrehozható az alkalmazott objektum klónja, hivatkozással ugyanazon címobjektumok listájára, amelyek az eredeti alkalmazott objektum tulajdonában vannak.
A sekély másolás végrehajtásának módszerei a következők:- Hívja az objektum MemberwiseClone módszerét
- Készítsen klónt manuálisan egy unalmas módszerrel, amely unalmas, de könnyen irányítható
- Használjon olyan reflexiós technikát, amely automata lehetőséget biztosít a sekély másolás elvégzésére, de a teljesítmény felett
- Használjon olyan sorosítási módszert, amely lassabb, mint a reflexió, de automatizált és egyszerű