Atšķirība starp apglabāšanu () un pabeigšanu () C #

Autors: Laura McKinney
Radīšanas Datums: 2 Aprīlis 2021
Atjaunināšanas Datums: 13 Maijs 2024
Anonim
Scooters T-200M Risen from trash 4 part
Video: Scooters T-200M Risen from trash 4 part

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.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsatbrīvoties ()pabeigt ()
DefinētsMetode dispose () ir definēta interfeisa IDisposable interfeisā.Metode finalize () id definēta java.lang.object klasē.
Sintaksepublic 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ķisMetode 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šanaMetode dispose () ir jāievieš vienmēr, kad pastāv close () metode.Pārvaldītajiem resursiem jāievieš metode finalize ().
Piekļuves specifikatorsMetode 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
PerformanceMetode 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.

  1. Metode dispose () ir definēta interfeisā Neizmantojams. No otras puses, klasē tiek definēta metode finalize () objekts.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.