Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 20506|Odpoveď: 1

[Zdroj] C# Deep Dive - Destructors

[Kopírovať odkaz]
Zverejnené 17. 8. 2018 13:54:43 | | |
Deštruktory sa v C# používajú len zriedka, takže na ne mnohí ľudia zabudli, hoci sú málo užitočné a nepoužiteľné na štúdium.

Jeden.        Charakteristiky deštruktorov:

Deštruktori môžu existovať iba v triedach, nie v štruktúrach; Deštruktor nemôže mať žiadne modifikátory, vrátane modifikátorov riadenia prístupu, statických modifikátorov, abstraktných modifikátorov, virtuálnych modifikátorov a podobne; Deštruktor nemá žiadne parametre, čo znamená, že nemôže dôjsť k preťaženiu.

Dva.        Kedy zavolať deštruktora:

Deštruktor sa volá, keď je predmet recyklovaný zberačom odpadu, ale zberač odpadu má vlastnosť, že je lenivý,
Premennú nerecykluje hneď po jej opustení rozsahu a životnosti, ale len vtedy, keď to považuje za vhodné, zvyčajne keď je pamäť obmedzená. Napríklad:

Po návrate metódy btn_Click by sa malo de ukončiť, ale jeho deštruktor sa nevolá, čo naznačuje, že zberač odpadu ho nerecykloval; Keď formulár zatvoríte, deštruktor sa spustí, čo znamená, že na konci programu je garbage collector neochotne nútený ho recyklovať (^-^).
Samozrejme, môžeme zavolať GC.Collect(), aby sme vynútili recykláciu:

Keď klikneš na btn1, de1 a nový Demo() sa ukončia a deštruktor sa zavolá.
de2 ešte nevypršal svoju životnosť, takže aj keď sa použije metóda GC.Collect, nebude recyklovaný; keď sa btn1_Click vráti, de2 už vypršal svoju životnosť, ale kvôli lenivosti zberača odpadu sa stále nerecykluje; Až keď btn2 zavolá metódu GC.Collect, de2 je znovu získaný a jeho deštruktor zavolaný.

Jedným zo spôsobov, ako zabrániť volaniam destruktora, je implementovať rozhranie IDisposable, ktoré definuje jedinečnú metódu: Dispose().
To zabraňuje internému volaniu deštruktora, čo znamená, že ak sa nudíte, môžete implementovať toto rozhranie bez volania GC.SuppressFinalize(^-^), čo je bezvýznamné, pretože deštruktor neblokuje:

Teraz sa destructor de1 nebude volať.

Tri.        Podstata destructora:

Deštruktor je v podstate metóda, ktorá má tvar:

Zvyčajne si myslíme, že deštruktory môže volať iba systém, nie samotní programátori, ale to nie je úplne pravda, a deštruktory možno tiež explicitne volať, veď je to len metóda:

Deštruktory nie sú potrebné, pokiaľ sa v triede neotvoria nespravované zdroje





Predchádzajúci:C# Distinct podmienečne deduplikuje objekty
Budúci:Správa výnimky: "StrongTypingException: IsPrima...
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com