A pusztítókat ritkán használják a C#-ban, ezért sokan elfelejtették őket, bár kevéssé hasznosak és tanulni haszontalanok.
Egy. A rombolók jellemzői:
A pusztítók csak osztályokban létezhetnek, nem szerkezetekben; A pusztítónak nem lehetnek módosítói, beleértve a hozzáférés-szabályozó módosítókat, statikus módosítókat, absztrakt módosítókat, virtuális módosítókat stb.; A pusztítónak nincsenek paraméterei, ami azt jelenti, hogy nem lehet túlterhelés.
Kettő. Mikor kell hívni a pusztítót:
A pusztítót akkor hívják, amikor a szemétgyűjtő újrahasznosítja a tárgyat, de a szemétgyűjtőnek van egy jellemzője: lustaság, Nem azonnal újrahasznosítja a változót azután, hogy elhagyja a hatókört és az élettartamot, hanem csak akkor, amikor megfelelőnek tartja, általában akkor, amikor szűkös a memória. Például:
Miután a módszer btn_Click visszatér, a de-t le kell zárni, de a destructor nem hívja meg, ami azt jelzi, hogy a szemétgyűjtő nem újrahasznosította; Amikor bezárod az űrlapot, a romboló lefuttatható, ami azt jelzi, hogy a program végén a szemetgyűjtő vonakodva kénytelen újrahasznosítani (^-^). Természetesen hívhatjuk a GC.Collect() rendszert, hogy kényszerítsük az újrahasznosítást:
Amikor rákattintasz a btn1-re, a de1 és az új Demo() megszűnnek, és meghívják a pusztítót. a de2 élettartama még nem járt le, így még ha a GC.Collect módszert is hívják, nem kerül újrahasznosításra; amikor a btn1_Click visszatér, a de2 lejárt az élettartama, de a szemétszállító lusta miatt még mindig nem kerül újrahasznosításra; Csak akkor vált vissza a de2, amikor a btn2 meghívja a GC.Collect módszert, és meghívják a destructorát.
Az egyik módja a pusztító hívások megelőzésének az IDisposable interfész megvalósítása, amely egy egyedi metódust definiál: Dispose(). Ez megakadályozza, hogy a destructor belső hívása legyen, ami azt jelenti, hogy ha unatkozol, ezt az interfészt megvalósíthatod anélkül, hogy a GC.SuppressFinalize(^-^) hívnád, ami értelmetlen, mert nem blokkolja a pusztítót:
Most már a de1 pusztítóját nem fogják meghívni.
Három. A pusztító lényege:
A pusztító lényegében egy olyan módszer, amely a következőképpen jelenik meg:
Általában azt gondoljuk, hogy a destruktorokat csak a rendszer hívhatja meg, nem maguk a programozók, de ez nem teljesen igaz, és a destruktorokat kifejezetten is lehet nevezni, hiszen ez csak egy módszer:
A pusztítók nem szükségesek, hacsak nem nyitnak meg nem kezelt erőforrásokat az osztályban
|