Hjem Utvikling Hva er dypkopi? - definisjon fra techopedia

Hva er dypkopi? - definisjon fra techopedia

Innholdsfortegnelse:

Anonim

Definisjon - Hva betyr Deep Copy?

Dyp kopi, i C #, refererer til en teknikk der en kopi av et objekt opprettes slik at den inneholder kopier av både forekomstmedlemmer og gjenstandene som refereresemedlemmer peker på.


Dyp kopi er ment å kopiere alle elementene i et objekt, som inkluderer direkte refererte elementer (av verditype) og indirekte refererte elementer av en referansetype som holder en referanse (pekeren) til et minneplass som inneholder data i stedet for å inneholde dataene i seg selv. Dypkopi brukes i scenarier der det opprettes en ny kopi (klon) uten referanse til originaldata.

Techopedia forklarer Deep Copy

Dyp kopi skiller seg fra grunne kopier på den måten referansetypemedlemmene til objektet kopieres. Mens du kopierer feltmedlemmene av verditype i begge tilfeller, utføres en bit-for-bit kopi av feltet. Når du kopierer felt av referansetype, innebærer grunne kopier bare å kopiere referansen, mens i dypkopi utføres en ny kopi av det refererte objektet.


Dyp kopi kan illustreres med et eksempel ved å betrakte et ansatt-objekt som har AddressInfo som medlem av referansetype sammen med andre medlemmer av verdityp. En dyp kopi av Medarbeider oppretter et nytt objekt, Employee2, med medlemmer av verditype lik Employee, men refererer til et nytt objekt, AddressInfo2, som er en kopi av AddressInfo.


Dyp kopi kan implementeres ved hjelp av en av følgende metoder:

  • Kopikonstruktør av klassen kan implementeres med den nødvendige logikken for å kopiere medlemmer av både verdi og referanse (etter riktig minnetildeling). Denne metoden er slitsom og feilutsatt.
  • System.Object.MemberwiseClone-metoden kan brukes til å kopiere de ikke-statiske medlemmene av verditype. Kopier av objekter av referansetype kan opprettes og tildeles med samme sett med verdier som originalen
  • Et objekt som må kopieres dypt, kan serialiseres og de-serialiseres til et nytt objekt ved å gjenopprette det. Denne metoden er automatisert og krever ikke kodeendringer for modifikasjoner i objektmedlemmer, men er tregere enn andre metoder og krever at det klonede objektet kan serialiseres
  • Refleksjon med rekursjon kan brukes til å få en grunne kopi, på hvilket tidspunkt den ekstra koden som er nødvendig for dypkopi, kan legges til. Denne metoden er automatisert og krever ikke kodeendringer for tillegg eller fjerning av felt i objektet. Det er tregere og ikke tillatt i delvis tillitsmiljø
  • Mellomspråklig kode kan brukes, noe som er raskere, men resulterer i mindre kodelesbarhet og vanskelig vedlikehold

Slik implementerer du dypkopi:

  • Objektet må være veldefinert og kan ikke være vilkårlig
  • Egenskaper til objekt vil ikke bli vurdert
  • Kloning må automatiseres med etterretning for spesielle tilfeller (som gjenstander som inneholder ubehandlede referanser)
Hva er dypkopi? - definisjon fra techopedia