Sammenligningstabel
Grundlag for sammenligning | disponere () | afslutte () |
---|---|---|
defineret | Metoden Dispose () er defineret i grænsefladen IDisposable interface. | Metoden afsluttes () id defineret i java.lang.object klasse. |
Syntaks | Offentligt tomrum Disponér () { // Kassér kode her } | beskyttet tomrum afsluttes () { // færdiggørelse kode her } |
påberåbes | Metoden disponere () påberåbes af brugeren. | Metoden færdiggør () påberåbes af affaldssamleren. |
Formål | Metode 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. |
Implementering | Metoden disponere () skal implementeres, når der er en tæt () metode. | Metoden færdiggør () skal implementeres for ustyrede ressourcer. |
Adgang specifier | Metoden disponere () erklæres som offentlig. | Metoden færdiggør () erklæres som privat. |
Handling | Metoden disponerer () er hurtigere og disponerer øjeblikkeligt et objekt. | Metoden færdiggøres er langsommere i forhold til at bortskaffe |
Ydeevne | Metoden 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 ()
- Metoden disponere () er defineret i et interface IDisposable . På den anden side afklares metoden () i klassobjektet .
- 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.
- 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.
- 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.
- 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.
- 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.