Anbefalet, 2021

Redaktørens Valg

Forskel Mellem disponere () og færdiggøre () i C #

Metoder bortskaffes () og færdiggør () er metoderne til C #, der påberåbes for at frigøre de ustyrede ressourcer, som et objekt indeholder. Metoden Dispose () defineres inde i grænsefladen IDisposable, mens metoden færdiggøres () er defineret inde i klasseobjektet. Den væsentligste forskel mellem disponere () og færdiggøre () er at metoden disponerer () skal udtrykkeligt påberåbes af brugeren, mens metoden færdiggør () påberåbes af affaldssamleren, lige før genstanden ødelægges. Lad os studere nogle andre forskelle mellem dem ved hjælp af et sammenligningskort vist nedenfor.

Sammenligningstabel

Grundlag for sammenligningdisponere ()afslutte ()
defineretMetoden Dispose () er defineret i grænsefladen IDisposable interface.Metoden afsluttes () id defineret i java.lang.object klasse.
SyntaksOffentligt tomrum Disponér () {
// Kassér kode her
}
beskyttet tomrum afsluttes () {
// færdiggørelse kode her
}
påberåbesMetoden disponere () påberåbes af brugeren.Metoden færdiggør () påberåbes af affaldssamleren.
FormålMetode disponere () bruges til at frigøre ustyrede ressourcer, når det påberåbes.Metode færdiggør () bruges til at frigøre ustyrede ressourcer, før objektet er ødelagt.
ImplementeringMetoden disponere () skal implementeres, når der er en tæt () metode.Metoden færdiggør () skal implementeres for ustyrede ressourcer.
Adgang specifierMetoden disponere () erklæres som offentlig.Metoden færdiggør () erklæres som privat.
HandlingMetoden disponerer () er hurtigere og disponerer øjeblikkeligt et objekt.Metoden færdiggøres er langsommere i forhold til at bortskaffe
YdeevneMetoden disponerer () udfører den øjeblikkelige handling, derfor påvirker ikke udførelsen af ​​hjemmesider.Metoden færdiggør () bliver langsommere påvirker hjemmesidernes ydeevne.

Definition af disponere ()

Metoden Dispose () frigiver de ustyrede ressourcer, der holdes af et objekt af klassen. De ustyrede ressourcer er filer, dataforbindelser osv. Metoden disponere () er angivet i grænsefladen IDisposeable, og den implementeres af klassen ved at implementere grænsefladen IDisposable. Denne metode kaldes ikke automatisk. Programmeren skal implementere det manuelt, når du opretter en brugerdefineret klasse, som vil blive brugt af andre. Metoden har følgende syntaks:

 Offentlig ugyldig bortskaffelse () {// Kassér kode her} 

I ovenstående syntaks kan du bemærke, at metoden er erklæret som offentlig. Det er fordi denne metode er defineret i grænsefladen IDisposable, og den skal implementeres af den klasse, der implementerer denne grænseflade. Så for at give adgang til implementeringsklassen er metoden angivet som offentlig.

Denne metode påberåbes manuelt af koden til et program, som det er implementeret for at påberåbe sig. Metoderne ydeevne er hurtig, og det frigør øjeblikkeligt de ressourcer, som en klasse har til formål.

Definition af færdiggørelse ()

Metoden Finalize () defineres i objektklassen. Det bruges til oprydning. Denne metode kaldes af affaldssamleren, når referencen af ​​en genstand ikke anvendes i lang tid. Garbage collector frigør de administrerede ressourcer automatisk, men hvis du vil frigøre de ustyrede ressourcer som filhåndtering, dataforbindelse mv, skal den færdige metode implementeres manuelt. Affaldsopsamleren påberåber metoden færdiggør () lige før det ødelægger objektet fuldstændigt.

Metodens syntaks afslutter ():

 beskyttet tomrum færdiggør () {// færdiggørelse kode her} 

I syntaksen ovenfor afslutter metoden () erklæret som beskyttet. Årsagen bag dette er, at metoden afsluttes () må ikke være tilgængelig uden for klassen, og den må kun være tilgængelig for affaldssamleren.

Metoden finalize () påvirker omkostningerne ved ydeevnen, da den ikke frigiver hukommelsen med det samme. I C # kaldes den endelige metode automatisk med destruktorer.

Nøgleforskelle Mellem disponere () og færdiggøre ()

  1. Metoden disponere () er defineret i et interface IDisposable . På den anden side afklares metoden () i klassobjektet .
  2. Metoden disponere () skal manuelt påberåbes inde i koden af ​​en programmør, mens metoden færdiggøres automatisk påkaldes af affaldsopsamleren, inden den ødelægger objektet.
  3. Metoden bortskaffelse kunne påberåbes når som helst, mens fremgangsmåden færdiggøres påberåbes af affaldssamleren, når den konstaterer, at objektet ikke er blevet henvist i lang tid.
  4. Metoden disponere () implementeres i en klasse efter implementering af grænsefladen IDisposable. Metoden færdiggør () skal kun implementeres for ustyrede ressourcer, fordi de administrerede ressourcer automatisk frigøres af affaldssamleren.
  5. Adgangsspecifikatoren for metoden disponere () er offentlig som den er defineret i grænsefladen IDisposable, og den ville blive implementeret af den klasse, der implementerer denne grænseflade, og den bør derfor være offentlig. På den anden side afslutter metoden () beskyttet adgangsspecifikke, så den ikke skal være tilgængelig for ethvert medlem uden for klassen.
  6. Metoden disponere () er hurtig og frigør objektet øjeblikkeligt, og det påvirker ikke præstationsomkostningerne. Metoden færdiggør () er langsommere og frigør ikke de ressourcer, som objektet ligger inde med øjeblikkeligt.

Konklusion:

Det anbefales at bruge metode disponere () over metoden færdiggør (), da det er hurtigere end færdiggør. Det kunne også kaldes til enhver tid, når det var nødvendigt.

Top