Dziļā kopija

Autors: Lewis Jackson
Radīšanas Datums: 8 Maijs 2021
Atjaunināšanas Datums: 25 Jūnijs 2024
Anonim
Ir iznācis "Balss Iesildīšanas Vingrinājumu" disks
Video: Ir iznācis "Balss Iesildīšanas Vingrinājumu" disks

Saturs

Definīcija - ko nozīmē dziļā kopija?

Dziļā kopija C # ir atsauce uz paņēmienu, ar kuru tiek izveidota objekta kopija, lai tajā būtu gan instanču locekļu kopijas, gan objekti, uz kuriem norāda atsauces locekļi.

Dziļā kopija ir paredzēta, lai kopētu visus objekta elementus, kas ietver tieši atsauktos elementus (vērtības tipu) un netieši atsauktos atsauces tipa elementus, kas satur atsauci (rādītāju) uz atmiņas vietu, kurā ir dati, nevis tajā ir paši dati. Dziļo kopiju izmanto scenārijos, kad tiek izveidota jauna kopija (klons) bez atsauces uz oriģinālajiem datiem.


Ievads Microsoft Azure un Microsoft Cloud | Šajā rokasgrāmatā jūs uzzināsit, kas ir mākonis skaitļošana un kā Microsoft Azure var palīdzēt jums migrēt un vadīt savu biznesu no mākoņa.

Techopedia skaidro Deep Copy

Dziļā kopija atšķiras no seklas kopijas tādā veidā, kā tiek kopēti objekta atsauces tipa dalībnieki. Kopējot vērtības veida lauka locekļus, abos gadījumos tiek veikta lauka pa daļām kopija. Kopējot atsauces tipa laukus, sekla kopija nozīmē tikai atsauces kopēšanu, turpretī dziļajā eksemplārā tiek veikta jauna minētā objekta kopija.

Dziļo kopiju var ilustrēt ar piemēru, apsverot darbinieku objektu, kura adrese irInfo kā atsauces tipa loceklis, kā arī citus vērtības veida dalībniekus. Darbinieka dziļa kopija izveido jaunu objektu Employee2, kura vērtības tips ir vienāds ar darbinieku, bet atsaucas uz jaunu objektu AddressInfo2, kas ir AddressInfo kopija.

Dziļo kopiju var ieviest, izmantojot jebkuru no šīm metodēm:


  • Klases kopēšanas konstruktoru var ieviest ar nepieciešamo loģiku gan vērtību, gan atsauces (pēc pareizas atmiņas iedalīšanas) tipa dalībnieku kopēšanai. Šī metode ir garlaicīga un pakļauta kļūdām.
  • System.Object.MemberwiseClone metodi var izmantot, lai kopētu vērtības tipa nestatiskos locekļus.Atsauces tipa objektu kopijas var izveidot un piešķirt tām pašām vērtību kopām kā oriģinālam
  • Objektu, kas dziļi jākopē, var sērijveidā atdalīt un pārveidot par jaunu objektu. Šī metode ir automatizēta, un objekta dalībnieku modifikācijām nav vajadzīgas koda izmaiņas, taču tā ir lēnāka nekā citas metodes, un klonētam objektam jābūt serializējamam.
  • Pārdomu ar rekursiju var izmantot sekla eksemplāra iegūšanai, kurā var pievienot dziļajam eksemplāram nepieciešamo papildu kodu. Šī metode ir automatizēta, un tai nav nepieciešamas koda izmaiņas, lai objektā pievienotu vai noņemtu laukus. Tas ir lēnāks un nav pieļaujams daļējas uzticēšanās vidē
  • Var izmantot valodas starpposma kodu, kas ir ātrāks, taču tā rezultātā kods ir mazāk salasāms un apgrūtināta

Lai ieviestu dziļo kopiju:


  • Objektam jābūt precīzi definētam un tas nedrīkst būt patvaļīgs
  • Objekta īpašības netiks ņemtas vērā
  • Klonēšana ir automatizēta ar izlūkošanu īpašiem gadījumiem (piemēram, objektiem, kas satur nepārvaldītas atsauces)