Anbefalt, 2024

Redaksjonens

Forskjellen mellom disponere () og ferdigstille () i C #

Metoder disponere () og ferdigstille () er metodene til C # som påberopes for å frigjøre de ustyrte ressursene som et objekt holder. Metoden Dispose () er definert inne i grensesnittet IDisposable, mens metoden ferdiggjør () er definert inne i klasseobjektet. Hovedforskjellen mellom disponere () og ferdigstille () er at metoden disponerer () må uttrykkelig påberopes av brukeren, mens fremgangsmåten ferdigstilles () påberopes av søppelsamleren, like før objektet blir ødelagt. La oss studere noen andre forskjeller mellom dem ved hjelp av et sammenligningsdiagram som er vist nedenfor.

Sammenligningstabel

Grunnlag for sammenligningdisponere ()fullføre ()
definertMetoden disponere () er definert i grensesnittet IDisposable grensesnitt.Metoden avsluttes () id definert i java.lang.object klasse.
syntaxOffentlig tomrom Avhend () {
// Kast koden her
}
beskyttet tomrom avsluttes () {
// ferdigstillelseskode her
}
påkaltMetoden disponere () er påkalt av brukeren.Metoden ferdigstiller () påberopes av søppelsamleren.
HensiktMetode disponere () brukes til å frigjøre ustyrte ressurser når det er påkalt.Metoden ferdiggjør () brukes til å frigjøre ustyrte ressurser før objektet blir ødelagt.
GjennomføringMetoden disponere () skal implementeres når det er en nær () metode.Metoden ferdigstiller () skal implementeres for ustyrte ressurser.
Tilgang spesifisererMetoden disponere () er erklært som offentlig.Metoden ferdigstiller () erklært som privat.
HandlingMetoden disponere () er raskere og disponerer umiddelbart et objekt.Metoden ferdigstiller er langsommere i forhold til å avhende
OpptredenMetoden disponerer () utfører øyeblikkelig handling, derfor påvirker ikke ytelsen til nettsteder.Metoden ferdigstiller () blir langsommere påvirker ytelsen til nettstedene.

Definisjon av disponere ()

Metoden Dispose () frigir de ustyrte ressursene som holdes av et objekt av klassen. De ustyrte ressursene er filer, dataforbindelser, etc. Metoden disponeres () er oppgitt i grensesnittet IDisposeable, og det implementeres av klassen ved å implementere grensesnittet IDisposable. Denne metoden kalles ikke automatisk. Programmereren må implementere den manuelt når du oppretter en tilpasset klasse som vil bli brukt av andre. Metoden har følgende syntaks:

 Offentlig ugyldiggjøring () {// Avhend kode her} 

I ovennevnte syntaks 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 tilgang til implementeringsklassen, er metoden deklarert som offentlig.

Denne metoden er påkalt manuelt av koden til et program som det er implementert for å påkalle. Fremgangsmåtenes ytelse er rask, og den frigjør øyeblikkelig ressursene som holdes av objektet til en klasse.

Definisjon av ferdigstillelse ()

Metoden Finalize () er definert i objektklassen . Den brukes til opprydding. Denne metoden kalles av søppelsamleren når referansen til en gjenstand ikke brukes i lang tid. Søppelkollektor frigjør de administrerte ressursene automatisk, men hvis du vil frigjøre de ustyrte ressursene som filhåndtak, dataforbindelse, etc., må sluttføringsmetoden implementeres manuelt. Søppelkollekten påberoper metoden ferdigbehandle () like før det ødelegger objektet helt.

Syntaksen av metoden avsluttes ():

 beskyttet tomrom avsluttes () {// ferdigstillelseskode her} 

I syntaksen ovenfor, avsluttes metoden () som beskyttet. Årsaken til dette er at metoden er ferdig () må ikke være tilgjengelig fra utenfor klassen, og den må bare være tilgjengelig for søppelsamleren.

Metoden Finalize () påvirker kostnadene ved ytelsen, da den ikke frigjør minnet umiddelbart. I C # kalles den endelige metoden automatisk med destruktorer.

Nøkkelforskjeller mellom disponere () og sluttføre ()

  1. Metoden disponere () er definert i et grensesnitt IDisposable . På den annen side er metoden ferdiggjort () definert i klassobjektet .
  2. Metoden disponere () må påkreves manuelt inne i koden av en programmerer, mens metoden sluttgjøres automatisk påkrevet av søppelkollektoren før den ødelegger objektet.
  3. Metoden disponere kan påkalles når som helst, mens metoden som ferdigstilles, påberopes av søppelkollektor når den finner at objektet ikke har blitt referert i lang tid.
  4. Metoden disponere () er implementert i en klasse etter implementering av grensesnittet IDisposable. Metoden ferdigstiller () må bare implementeres for ustyrte ressurser fordi de administrerte ressursene automatisk frigjøres av søppelsamleren.
  5. Tilgangsspesifikatoren for metoden disponere () er offentlig som den er definert i grensesnittet IDisposable, og den ville bli implementert av klassen som implementerer dette grensesnittet, derfor bør den være offentlig. På den annen side fullfører metoden () beskyttet tilgangsspesifikator slik at den ikke skal være tilgjengelig for ethvert medlem utenfor klassen.
  6. Metoden disponere () er rask og frigjør objektet umiddelbart, og det påvirker ikke ytelseskostnaden. Metoden ferdigstiller () er tregere og frigjør ikke ressursene som objektet holdes umiddelbart.

Konklusjon:

Det foreslås å bruke metode disponere () over metoden ferdigbehandle () som det er raskere enn å fullføre. Det kan også kalles når som helst, når det er nødvendig.

Top