Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 20506|Válasz: 1

[Forrás] C# Mélybúvár - Pusztítók

[Linket másol]
Közzétéve 2018. 08. 17. 13:54:43 | | |
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





Előző:C# A differenciák feltételesen dedliklikálnak objektumokat
Következő:Kivétel üzenet: "StrongTypingException: IsPrima...
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com