Atšķirība starp apglabāšanu () un pabeigšanu () C #
Saturs
Metodes dispose () un finalize () ir C # metodes, kuras tiek izmantotas, lai atbrīvotu objekta rīcībā esošos nepārvaldītos resursus. Dispose () metode ir definēta IDisposable interfeisā, turpretī metode finalize () ir definēta klases objektā. Galvenā atšķirība starp dispose () un finalize () ir tā, ka metode atbrīvoties() ir skaidri jānorāda lietotājam, savukārt metode pabeigt () uz atkritumu savācēju tieši pirms objekta iznīcināšanas. Ļaujiet mums izpētīt dažas citas atšķirības starp tām, izmantojot salīdzināšanas diagrammu, kas parādīta zemāk.
- Salīdzināšanas tabula
- Definīcija
- Galvenās atšķirības
- Secinājums
Salīdzināšanas tabula
Salīdzināšanas pamats | atbrīvoties () | pabeigt () |
---|---|---|
Definēts | Metode dispose () ir definēta interfeisa IDisposable interfeisā. | Metode finalize () id definēta java.lang.object klasē. |
Sintakse | public void Dispose () { // Apglabājiet kodu šeit } | aizsargāts tukšums pabeigt () { // pabeigšanas kods šeit } |
Iesaukts | Lietotājs izsauc metodi dispose (). | Atkritumu savācējs izsauc metodi finalize (). |
Mērķis | Metode dispose () tiek izmantota, lai atbrīvotu nepārvaldītus resursus ikreiz, kad uz to tiek izsaukts. | Metode finalize () tiek izmantota, lai atbrīvotu neapsaimniekotus resursus pirms objekta iznīcināšanas. |
Īstenošana | Metode dispose () ir jāievieš vienmēr, kad pastāv close () metode. | Pārvaldītajiem resursiem jāievieš metode finalize (). |
Piekļuves specifikators | Metode dispose () tiek pasludināta par publisku. | Metode finalize () tiek deklarēta kā privāta. |
Darbība | Metode dispose () ir ātrāka un uzreiz iznīcina objektu. | Metodes pabeigšana ir lēnāka, salīdzinot ar apglabāšanu |
Performance | Metode disposed () veic tūlītēju darbību, tāpēc neietekmē vietņu darbību. | Metode pabeigt () lēnāk ietekmē vietņu veiktspēju. |
Atsavināšanas definīcija ()
Dispose () metode atbrīvo nepārvaldītus resursus, kas atrodas klases objektā. Nepārvaldītie resursi ir faili, datu savienojumi utt. Metode dispose () tiek deklarēta interfeisā Neizmantojams un to īsteno klase, ieviešot IDisposable interfeisu. Šī metode netiek automātiski izsaukta. Programmētājam tas jāievieš manuāli, kad veidojat pielāgotu klasi, kuru izmantos citi. Metodei ir šāda sintakse:
public void dispose () {// apglabāt kodu šeit}
Iepriekš minētajā sintaksē varat novērot, ka metode tiek deklarēta kā publiska. Tas ir tāpēc, ka šī metode ir noteikta saskarnē IDisposable, un tā jāīsteno klasei, kas ievieš šo saskarni. Tātad, lai nodrošinātu piekļuvi ieviešanas klasei, metode tiek deklarēta kā publiska.
Šī metode tiek izsaukta manuāli ar programmas kodu, jo tā ir ieviesta, lai izsauktu. Metodes tiek veiktas ātri, un tas uzreiz atbrīvo resursus, kas ir klases objekta rīcībā.
Pabeigtības definīcija ()
Pabeigšanas () metode ir definēta objekts klase. To izmanto tīrīšanas darbībām. Šo metodi atkritumu savācējs sauc par gadījumiem, kad objekta atsauce ilgstoši netiek izmantota. Atkritumu savācējs automātiski atbrīvo pārvaldītos resursus, bet, ja vēlaties atbrīvot nepārvaldītus resursus, piemēram, faila rokturi, datu savienojumu utt., Pabeigšanas metode jāievieš manuāli. Atkritumu savācējs izsaka metodi finalize () tieši pirms objekta pilnīgas iznīcināšanas.
Metodes sintakse tiek pabeigta ():
aizsargāts tukšums pabeigt () {// pabeigšanas kods šeit}
Iepriekš minētajā sintaksē metode finalize () tiek pasludināta par aizsargātu. Iemesls tam ir tas, ka metodei finalize () jābūt pieejamai ārpus klases, un tai jābūt pieejamai tikai atkritumu savācējam.
Pabeigšanas () metode ietekmē veiktspējas izmaksas, jo tā uzreiz neatbrīvo atmiņu. C # versijā pabeigšanas metodi automātiski sauc par iznīcinātājiem.
- Metode dispose () ir definēta interfeisā Neizmantojams. No otras puses, klasē tiek definēta metode finalize () objekts.
- Programmētājam ir manuāli jāizsauc metode dispose () koda iekšpusē, savukārt atkritumu savācējs automātiski izsauc metodes pabeigšanu, pirms tā iznīcina objektu.
- Uz apglabāšanas metodi var atsaukties jebkurā laikā, turpretī atkritumu savācējs izmanto metodi, kas ir pabeigta, ja tā konstatē, ka uz šo objektu ilgu laiku nav atsauces.
- Metode dispose () tiek ieviesta klasē pēc IDisposable interfeisa ieviešanas. Metode finalize () jāievieš tikai nepārvaldīti resursi jo pārvaldītos resursus atkritumu savācējs automātiski atbrīvo.
- Metodes dispose () piekļuves specifikators ir publisks, jo tas ir definēts IDisposable interfeisā, un to ieviestu klase, kas ievieš šo saskarni, tāpēc tai vajadzētu būt publiskai. No otras puses, metodei finalize () ir aizsargāts piekļuves specifikators, lai tā nebūtu pieejama nevienam dalībniekam ārpus klases.
- Metode dispose () ir ātra un uzreiz atbrīvo objektu, tāpēc tas neietekmē veiktspējas izmaksas. Metode finalize () ir lēnāka un uzreiz neatbrīvo no objekta turētajiem resursiem.
Secinājums:
Ir ieteicams izmantot metodi dispose () virs metodes finalize (), jo tā ir ātrāka par galīgo. Arī to var izsaukt jebkurā laikā, kad nepieciešams.