Dubinska kopija

Autor: Lewis Jackson
Datum Stvaranja: 8 Svibanj 2021
Datum Ažuriranja: 25 Lipanj 2024
Anonim
ULOGA BARKARIOLA - moj prvi ulov na inchiku i zoku
Video: ULOGA BARKARIOLA - moj prvi ulov na inchiku i zoku

Sadržaj

Definicija - Što znači duboka kopija?

Duboka kopija u C # odnosi se na tehniku ​​kojom se stvara kopija objekta tako da sadrži kopije i članova instance i objekata na koje upućuju referentni članovi.

Dubinska kopija namijenjena je kopiranju svih elemenata objekta, koji uključuju izravno referencirane elemente (vrijednosnog tipa) i neizravno upućene elemente referentnog tipa koji sadrže referencu (pointer) na memorijsko mjesto koje sadrži podatke, a ne sadrži sami podaci. Duboka kopija koristi se u scenarijima u kojima se stvara nova kopija (klon) bez ikakvog pozivanja na izvorne podatke.


Uvod u Microsoft Azure i Microsoft Cloud | Kroz ovaj vodič naučit ćete o čemu se radi računalstvo u oblaku i kako vam Microsoft Azure može pomoći da preselite i pokrenete svoje poslovanje iz oblaka.

Tehopedia objašnjava duboku kopiju

Duboka kopija razlikuje se od plitke kopije u načinu kopiranja članova referentne vrste. Dok se u oba slučaja kopiraju polja polja vrijednosti vrijednosti, izvodi se malo-bitna kopija polja. Kod kopiranja referentnih polja, plitka kopija uključuje kopiranje samo reference, dok se u dubokoj kopiji izvodi nova kopija navedenog objekta.

Duboka kopija može se ilustrirati primjerom uzimajući u obzir objekt zaposlenika koji ima AddressInfo kao referentni član zajedno s ostalim članovima vrste vrijednosti. Dubina kopija Employee stvara novi objekt, Employee2, s članovima vrste vrijednosti jednake Employee, ali upućuje na novi objekt AddressInfo2, koji je kopija AddressInfo.

Dubinska kopija može se implementirati pomoću bilo koje od sljedećih metoda:


  • Konstruktor konstrukcije klase može se implementirati s potrebnom logikom za kopiranje članova obje vrijednosti i vrijednosti (nakon odgovarajuće dodjele memorije). Ova metoda je zamorna i sklona pogreškama.
  • System.Object.MemberwiseClone metoda može se koristiti za kopiranje nestalnih članova tipa vrijednosti.Kopije objekata referentnog tipa mogu se kreirati i dodijeliti s istim nizom vrijednosti kao u izvorniku
  • Objekt koji se mora duboko kopirati može se serializirati i deserializirati u novi objekt vraćanjem. Ova metoda je automatizirana i ne zahtijeva promjene koda za modifikacije u objektima članova, ali je sporija od drugih metoda i zahtijeva klonirani objekt da se može serijski ispitati
  • Razmišljanje s rekurzijom može se upotrijebiti za dobivanje plitke kopije, na kojoj se može dodati dodatni kod potreban za duboku kopiju. Ova metoda je automatizirana i ne zahtijeva promjene koda za bilo kakvo dodavanje ili uklanjanje polja u objektu. To je sporije i nije dopušteno u okruženju s djelomičnim povjerenjem
  • Može se upotrijebiti srednji jezični kôd, što je brže, ali rezultira manjom čitljivošću koda i otežanim održavanjem

Da biste implementirali duboku kopiju:


  • Objekt mora biti dobro definiran i ne može biti proizvoljan
  • Svojstva objekta neće se razmatrati
  • Kloniranje se mora automatizirati inteligencijom za posebne slučajeve (poput objekata koji sadrže neupravljane reference)