Domov Rozvoj Co je mělká kopie? - definice z techopedie

Co je mělká kopie? - definice z techopedie

Obsah:

Anonim

Definice - Co znamená mělká kopie?

Mělká kopie v C # je proces vytváření klonu objektu instancí nové instance stejného typu jako původní objekt a zkopírováním nestatických členů existujícího objektu do klonu. Členové hodnotového typu jsou kopírováni kousek po kousku, zatímco členové referenčního typu jsou zkopírováni tak, že odkazovaný objekt a jeho klon odkazují na stejný objekt.

Obecně se mělká kopie používá, je-li výkon jedním z požadavků spolu s podmínkou, že objekt nebude během aplikace mutován. Předáním klonu obsahujícího neměnná data je vyloučena možnost poškození jakýmkoli kódem. Mělká kopie se považuje za účinnou tam, kde odkazy na objekty umožňují předávání objektů kolem adresy paměti, takže není nutné kopírovat celý objekt.

Mělká kopie se také nazývá kopie po členech.

Techopedia vysvětluje mělkou kopii

Mělká kopie je podobná hluboké kopii při přiřazování každého člena objektu k jinému objektu, liší se však způsobem kopírování pole typu odkazu. Na rozdíl od mělké kopie, kde je odkaz pouze kopírován, v hluboké kopii je vytvořena nová kopie odkazovaného objektu.

Zvažte například objekt zaměstnance, který obsahuje podrobnosti o osobních údajích, včetně seznamu adresních objektů, které ukládají více adres zaměstnanců. Provedením mělké kopie zaměstnaneckého objektu lze vytvořit klon zaměstnaneckého objektu s odkazy na stejný seznam adresových objektů, které vlastní původní zaměstnanecký objekt.

Metody provádění mělké kopie zahrnují:
  • Volání metody MemberwiseClone objektu
  • Vytvořte klon ručně pomocí vlastní metody, která je nudná, ale snadno ovladatelná
  • Použijte techniku ​​odrazu, která poskytuje automatizované zařízení pro provádění mělké kopie, ale s výkonem nad hlavou
  • Použijte metodu serializace, která je pomalejší než reflexe, ale automatizovaná a jednoduchá
Mělké kopie nelze použít, pokud má objekt členy referenčního typu, které jsou často upravovány. Tato definice byla napsána v kontextu C #
Co je mělká kopie? - definice z techopedie