Ajánlott, 2024

Szerkesztő Választása

Eltérés () és véglegesítés () között a C #

A () és a véglegesítés () módszerei a C # módszerei, amelyekre az objektum által kezelt kezeletlen erőforrások felszabadítására kerül sor. Az eldobható () metódust az IDisposable interfészen belül definiáljuk, míg a módszer véglegesítése () az osztályobjektumon belül van meghatározva. A főbb különbség a () és a véglegesítés () között az, hogy a módszert a felhasználónak kifejezetten meg kell hívnia, míg a módszer véglegesítése () a szemétgyűjtő által, közvetlenül az objektum megsemmisítése előtt hivatkozik. Tanulmányozzunk néhány más különbséget az alábbiakban bemutatott összehasonlító táblázat segítségével.

Összehasonlító táblázat

Az összehasonlítás alapjadobja ()véglegesítés ()
MeghatározottA módszer () az IDisposable interfészben van meghatározva.A java.lang.object osztályban definiált módszer véglegesíti () azonosítóját.
Szintaxispublic void Elveti () {
// A kódot itt el kell dobni
}
védett void finalize () {
// itt véglegesítési kód
}
hivatkozniA módszert () a felhasználó hívja fel.A módszer véglegesítése () a szemétgyűjtőre hivatkozik.
CéljaA módszer eldobása () a kezeletlen erőforrások felszabadítására szolgál, amikor meghívja.A módszer véglegesítése () a kezeletlen erőforrások felszabadítására szolgál, mielőtt az objektum megsemmisülne.
VégrehajtásA módszer () eldobható, ha szoros () módszer van.A módszert véglegesíteni kell () a nem kezelt erőforrások esetében.
Hozzáférési specifikációA módszer () a nyilvánosságra kerül.A módszer véglegesítése () privátnak minősül.
AkcióA módszer () a gyorsabb és azonnal eltávolítja az objektumot.A módszer véglegesítése lassabb az ártalmatlanításhoz képest
TeljesítményA módszer () végrehajtja a pillanatnyi műveletet, így nem befolyásolja a weboldalak teljesítményét.A módszer véglegesítése () lassabb hatással van a webhelyek teljesítményére.

Az ártalmatlanítás meghatározása ()

Az eldobható () módszer az osztály tárgya által birtokolt kezeletlen erőforrásokat bocsátja ki. A kezeletlen erőforrások fájlok, adatcsatlakozások, stb. A módszer az eldobható felületen van megadva, és az osztály által végrehajtott, az IDisposable interfész alkalmazásával. Ezt a módszert nem hívják automatikusan. A programozónak manuálisan kell végrehajtania azt, amikor létrehoz egy egyéni osztályt, amelyet mások használnak. A módszer a következő szintaxist tartalmazza:

 public void dispatch () {// Kód eltávolítása itt} 

A fenti szintaxisban megfigyelhető, hogy a módszert nyilvánosnak nyilvánítják. Ennek az az oka, hogy ezt az eljárást az IDisposable interfész határozza meg, és ezt az interfészt megvalósító osztálynak kell végrehajtania. Tehát, a megvalósító osztály hozzáférhetőségének biztosítása érdekében a módszert nyilvánosnak nyilvánítják.

Ezt a módszert kézzel kell meghívni egy program kódjával, ahogyan azt a végrehajtás céljából végrehajtják. A módszerek teljesítménye gyors, és azonnal felszabadítja az osztály tárgyának birtokában lévő erőforrásokat.

A véglegesítés meghatározása ()

A végső () metódust az objektumosztály határozza meg. A tisztításhoz használják. Ezt a módszert a szemétgyűjtő hívja meg, ha egy objektum referenciáját hosszú ideig nem használják. A szemétgyűjtő automatikusan felszabadítja a kezelt erőforrásokat, de ha a kezeletlen erőforrásokat, például a fájlkezelőt, az adatkapcsolatot stb. A szemétgyűjtő a metódust véglegesíti (), mielőtt az objektumot teljesen elpusztítja.

A módszer szintaxisa befejeződik ():

 védett void finalize () {// véglegesítési kód itt} 

A fenti szintaxisban a módszer véglegesítése () védettnek minősül. Ennek oka az, hogy a módszer véglegesítése () nem érhető el az osztályon kívül, és csak a szemétgyűjtő számára érhető el.

A véglegesítés () módszer hatással van a teljesítményre, mivel nem szabad azonnal felszabadítani a memóriát. A C # -nél a véglegesítési eljárást a destruktorokkal automatikusan hívják.

Kulcsfontosságú különbségek a () és a véglegesítés () között

  1. A módszer () az ID-re választható felületen van meghatározva. Másrészt, a módszer véglegesítése () az osztályobjektumban van meghatározva.
  2. A módszert a programozónak manuálisan kell hívnia a kódon belül, míg a véglegesítést a szemétgyűjtő automatikusan meghívja, mielőtt elpusztítja az objektumot.
  3. A módszert bármikor meg lehetne hívni, míg a módszer véglegesítése a szemétgyűjtőre hivatkozik, amikor megállapítja, hogy az objektumot hosszú ideig nem hivatkozták.
  4. A módszert az (ID) elhelyezhető felület végrehajtása után egy osztályban hajtjuk végre. A módszert véglegesíteni () csak a nem kezelt erőforrásokra kell végrehajtani, mert a kezelt erőforrásokat automatikusan eltávolítja a szemétgyűjtő.
  5. A módszer hozzáférési specifikációja () a nyilvánosságra van hozva, ahogy azt az IDisposable interfész határozza meg, és azt az az osztály fogja végrehajtani, amely ezt az interfészt megvalósítja, ezért nyilvánosnak kell lennie. Másrészről a módszer véglegesítése () védett hozzáférési specifikátorral rendelkezik, hogy ne legyen elérhető az osztályon kívüli bármely tag számára.
  6. A módszer () a gyors, és így azonnal felszabadítja az objektumot, így nem befolyásolja a teljesítmény költségét. A módszer véglegesítése () lassabb, és nem mentesíti az objektumban lévő erőforrásokat azonnal.

Következtetés:

Javasoljuk, hogy a módszer véglegesítése () szerint a módszer () használata véglegesítse (). Szükség esetén bármikor hívható.

Top