Domov Razvoj Kaj je globoka kopija? - definicija iz tehopedije

Kaj je globoka kopija? - definicija iz tehopedije

Kazalo:

Anonim

Opredelitev - Kaj pomeni globoka kopija?

Globoka kopija v C # se nanaša na tehniko, s katero se ustvari kopija predmeta, tako da vsebuje kopije članov instanc in predmetov, na katere kažejo referenčni člani.


Globoka kopija je namenjena kopiranju vseh elementov predmeta, ki vključujejo neposredno sklicevane elemente (vrednostne vrste) in posredno navezane elemente referenčnega tipa, ki vsebujejo sklic (kazalec) na pomnilniško lokacijo, ki vsebuje podatke in ne vsebuje sami podatki. Globoka kopija se uporablja v scenarijih, kjer se ustvari nova kopija (klon) brez sklicevanja na izvirne podatke.

Tehopedia razlaga globoko kopiranje

Globoka kopija se od plitke razlikuje po načinu kopiranja članov referenčnega tipa. Medtem ko kopirate člane polja tipa vrednosti v obeh primerih, se opravi kopija polja po bitni obliki. Pri kopiranju polj referenčnega tipa plitva kopija vključuje le kopiranje sklicevanja, medtem ko se v globoki kopiji izvede nova kopija omenjenega predmeta.


Globoko kopijo lahko ponazorimo s primerom, če upoštevamo objekt zaposlenega, ki ima AddressInfo kot referenčni član, skupaj z drugimi člani vrste vrednosti. Globoka kopija Employee ustvari nov objekt, Employee2, s člani vrste vrednosti, ki je enaka zaposlenemu, vendar sklicuje na nov objekt, AddressInfo2, ki je kopija AddressInfo.


Globoko kopiranje je mogoče izvesti s katero koli od naslednjih metod:

  • Konstruktorja kopij razreda lahko izvedemo s potrebno logiko za kopiranje članov tako vrednosti kot tudi referenčnih (po pravilni dodelitvi pomnilnika) vrst. Ta metoda je dolgočasna in nagnjena k napakam.
  • System.Object.MemberwiseClone lahko uporabite za kopiranje nestalnih članov vrste vrednosti. Kopije predmetov referenčnega tipa je mogoče ustvariti in dodeliti z istim nizom vrednosti kot izvirnik
  • Predmet, ki ga je treba globoko kopirati, ga lahko serializiramo in deserializiramo v nov objekt tako, da ga obnovimo. Ta metoda je avtomatizirana in ne zahteva sprememb kode za spremembe v članih objekta, vendar je počasnejša od drugih metod in zahteva, da je kloniran predmet serijski
  • Odsev s rekurzijo lahko uporabimo za plitvo kopijo, v tem trenutku pa lahko dodamo dodatno kodo, potrebno za globoko kopijo. Ta metoda je avtomatizirana in ne zahteva sprememb kode za kakršno koli dodajanje ali odstranjevanje polj v objektu. V okolju delnega zaupanja je počasnejši in ni dovoljen
  • Uporablja se lahko vmesna jezikovna koda, ki je hitrejša, vendar ima za posledico manjšo berljivost kode in težko vzdrževanje

Za izvajanje globoke kopije:

  • Objekt mora biti dobro opredeljen in ne sme biti poljuben
  • Lastnosti predmeta ne bodo upoštevane
  • Kloniranje mora biti avtomatizirano z inteligenco za posebne primere (kot predmeti, ki vsebujejo neupravljane reference)
Kaj je globoka kopija? - definicija iz tehopedije