Forskjellen mellom disponere () og fullføre () i C #

Forfatter: Laura McKinney
Opprettelsesdato: 2 April 2021
Oppdater Dato: 13 Kan 2024
Anonim
Forskjellen mellom disponere () og fullføre () i C # - Teknologi
Forskjellen mellom disponere () og fullføre () i C # - Teknologi

Innhold


Metoder disponerer () og fullfører () er metodene til C # som påberopes for å frigjøre de ubehandlede ressursene som er holdt av et objekt. Dispose () -metoden er definert i grensesnittet IDisposable, mens metoden finalize () er definert i klasseobjektet. Hovedforskjellen mellom disponere () og fullføre () er at metoden avhende() må eksplisitt påberopes av brukeren, mens metoden sluttføre () blir påberopt av søppelsamleren, rett før gjenstanden blir ødelagt. La oss studere noen andre forskjeller mellom dem ved hjelp av et sammenligningstabell vist nedenfor.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningdisponere ()fullføre ()
definertMetoden disponere () er definert i grensesnittet ID-disponible grensesnitt.Metoden avslutter () id definert i klassen java.lang.object.
syntaxpublic void Dispose () {
// Kast her
}
beskyttet tomrom fullføre () {
// finaliseringskode her
}
påkalt Metoden disponere () påberopes av brukeren.Metoden ferdigstiller () påberopes av søppelsamleren.
HensiktMethod dispose () brukes til å frigjøre ubehandlede ressurser hver gang det påberopes.Finalisering av metoden () brukes til å frigjøre ubehandlede ressurser før objektet blir ødelagt.
GjennomføringMetoden disponerer () skal implementeres når det er en nær () metode.Metoden ferdigstille () skal implementeres for ustyrte ressurser.
TilgangsspesifikatorMetoden disponerer () er erklært som offentlig.Metoden ferdigstille () er erklært som privat.
Handling Metoden disponere () er raskere og kaster et objekt umiddelbart.Metoden er ferdig langsommere sammenlignet med kassering
OpptredenMetoden disponerer () utfører øyeblikkelig handling, og påvirker ikke ytelsen til nettsteder. Fullfør metoden () når den er tregere, påvirker ytelsen til nettstedene.


Definisjon av dispose ()

Dispose () -metoden frigjør de ubehandlede ressursene som holdes av et objekt av klassen. De ikke-administrerte ressursene er filer, datatilkoblinger, etc. Metoden disponerer () er deklarert i grensesnittet IDisposeable og det implementeres av klassen ved å implementere grensesnittet IDisposable. Denne metoden kalles ikke automatisk. Programmereren må implementere det manuelt når du oppretter en tilpasset klasse som skal brukes av andre. Metoden har følgende syntaks:

public void dispose () {// Kast her}

I syntaksen ovenfor kan du observere at metoden er erklært som offentlig. Det er fordi denne metoden er definert i grensesnittet IDisposable og den må implementeres av klassen som implementerer dette grensesnittet. Så for å gi tilgjengelighet til implementeringsklassen blir metoden erklært som offentlig.

Denne metoden blir påkalt manuelt av koden til et program når den implementeres for å påkalle. Metodenes ytelse er rask, og det frigjør øyeblikkelig ressursene som gjenstanden for en klasse holder.


Definisjon av fullføre ()

Fullfør () -metoden er definert i gjenstand klasse. Den brukes til opprydningsaktiviteter. Denne metoden kalles av søppelsamleren når referansen til en gjenstand ikke brukes på lenge. Søppelinnsamler frigjør de administrerte ressursene automatisk, men hvis du vil frigjøre de ubehandlede ressursene som filhåndtering, datatilkobling, etc., må sluttbehandlingsmetoden implementeres manuelt. Søppeloppsamleren påkaller metoden ferdigstille () rett før den ødelegger gjenstanden fullstendig.

Syntaksen til metoden fullfører ():

Protected void finalize () {// finaliseringskode her}

I syntaksen ovenfor blir metoden ferdigstille () erklært som beskyttet. Årsaken bak dette er at metoden ferdigstiller () ikke må være tilgjengelig utenfor klassen, og den må bare være tilgjengelig for søppelsamleren.

Fullfør () -metoden påvirker kostnadene for ytelsen, da den ikke frigjør minnet øyeblikkelig. I C # kalles sluttføringsmetoden automatisk med destruktører.

  1. Metoden disponere () er definert i et grensesnitt IDisposable. På den annen side er metoden ferdigstille () definert i klassen gjenstand.
  2. Metoden som disponeres () må påberopes manuelt i koden av en programmerer, mens metoden som avsluttes automatisk påberopes av søppelsamleren før den ødelegger gjenstanden.
  3. Metoden som disponeres kan påberopes når som helst, mens metoden som avsluttes påberopes av søppelsamleren når den finner ut at det ikke har blitt referert til dette objektet på lenge.
  4. Metoden disponerer () implementeres i en klasse etter implementering av grensesnittet ID-disponible. Metoden ferdigstille () må bare implementeres for ustyrte ressurser fordi de administrerte ressursene frigjøres automatisk av søppelsamleren.
  5. Tilgangsspesifikatoren for metoden disponere () er offentlig slik den er definert i grensesnittet IDisposable, og den vil bli implementert av klassen som implementerer dette grensesnittet, og derfor bør det være offentlig. På den annen side har metoden finalize () beskyttet tilgangsspesifikasjon slik at den ikke skal være tilgjengelig for noen medlemmer utenfor klassen.
  6. Metoden disponerer () er rask og frigjør objektet umiddelbart, og det påvirker ikke ytelseskostnadene. Fullfør metoden () er tregere og frigjør ikke ressursene som objektet holder umiddelbart.

Konklusjon:

Det anbefales å bruke metodedisponering () over metoden ferdigstille () siden den er raskere enn sluttføringen. Det kan også kalles når som helst når det er nødvendig.