Forskel mellem bortskaffelse () og færdiggør () i C #

Forfatter: Laura McKinney
Oprettelsesdato: 2 April 2021
Opdateringsdato: 10 Kan 2024
Anonim
Forskel mellem bortskaffelse () og færdiggør () i C # - Teknologi
Forskel mellem bortskaffelse () og færdiggør () i C # - Teknologi

Indhold


Metoder bortskaffes () og færdiggør () er metoderne til C #, der påberåbes for at frigøre de ikke-administrerede ressourcer, som et objekt har. Metoden dispose () er defineret inde i grænsefladen, der kan beskrives, mens metoden færdiggøres () er defineret inde i klasseobjektet. Den største forskel mellem bortskaffelse () og færdiggørelse () er, at metoden disponere() skal påberåbes eksplicit af brugeren, hvorimod metoden færdiggøre () påberåbes af affaldsopsamleren, lige før genstanden ødelægges. Lad os undersøge nogle andre forskelle mellem dem ved hjælp af et sammenligningskort, der er vist nedenfor.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningbortskaffes ()afslutte ()
defineretMetoden bortskaffes () er defineret i interface IDisposable interface.Metoden færdiggør () id defineret i klassen java.lang.object.
Syntaksoffentligt ugyldigt Bortskaf () {
// Bortskaf koden her
}
beskyttet tomrum afslutte () {
// finaliseringskode her
}
påberåbes Metoden bortskaffes () påberåbes af brugeren.Metoden færdiggøres () påberåbes af affaldsopsamleren.
FormålMetode bortskaffelse () bruges til at frigøre ikke-administrerede ressourcer, hver gang det påberåbes.Metodefinalisering () bruges til at frigøre uadministrerede ressourcer, før objektet ødelægges.
ImplementeringMetoden bortskaffes () skal implementeres, når der er en tæt () -metode.Metoden færdiggør () skal implementeres for ikke-administrerede ressourcer.
AdgangsspecifikationMetoden bortskaffes () erklæres som offentlig.Metoden færdiggøres () erklæres som privat.
Handling Metoden bortskaffelse () er hurtigere og bortskaffer et objekt øjeblikkeligt.Metoden færdiggøres er langsommere sammenlignet med bortskaffelse
YdeevneMetoden bortskaffer () udfører øjeblikkelig handling, og påvirker derfor ikke websteds ydelse. Metoden færdiggøres () ved at være langsommere påvirker webstedets ydelse.


Definition af bortskaffelse ()

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

offentligt ugyldigt bortskaffelse () {// Bortskaf kode her}

I ovenstående syntaks kan du observere, at metoden er erklæret som offentlig. Det skyldes, at denne metode er defineret i grænsefladen IDisponabel, og den skal implementeres af klassen, der implementerer denne grænseflade. Så for at give adgang til implementeringsklassen erklæres metoden som offentlig.

Denne metode påberåbes manuelt af et programkode, når den implementeres for at påberåbe sig. Metodernes ydeevne er hurtig, og det frigør øjeblikkeligt de ressourcer, der er indeholdt i objektets klasse.


Definition af afslutte ()

Metoden finalize () er defineret i objekt klasse. Det bruges til oprydningsaktiviteter. Denne metode kaldes affaldsopsamleren, når referencen til et objekt ikke bruges i lang tid. Affaldsopsamler frigiver de administrerede ressourcer automatisk, men hvis du vil frigøre de ikke-administrerede ressourcer som filhåndtering, dataforbindelse osv., Skal færdiggørelsesmetoden implementeres manuelt. Affaldsopsamleren påberåber sig metoden færdigbehandlet () lige inden den ødelægger genstanden fuldstændigt.

Syntaks for metoden afslutte ():

beskyttet tomrum afslutte () {// finaliseringskode her}

I syntaksen ovenfor erklæres metoden færdig () som beskyttet. Årsagen bag dette er, at metoden færdiggøres () ikke må være tilgængelig uden for klassen, og den må kun være tilgængelig for affaldsopsamleren.

Metoden finalize () påvirker udgifterne til ydelsen, da den ikke frigør hukommelsen med det samme. I C # kaldes finaliseringsmetoden automatisk med destruktører.

  1. Metoden bortskaffes () er defineret i en grænseflade IDisposable. På den anden side defineres metoden færdiggørelse () i klassen objekt.
  2. Metodedisponeringen () skal manuelt påberåbe sig inden i koden af ​​en programmerer, mens metoden færdiggøres automatisk aktiveres af affaldsopsamleren, før den ødelægger objektet.
  3. Bortskaffelse af metoden kunne påberåbes når som helst, mens metoden færdiggøres påberåbes af affaldsopsamleren, når den konstaterer, at der ikke er henvist til dette objekt i lang tid.
  4. Metoden bortskaffes () implementeres i en klasse efter implementering af interface IDisposable. Metoden færdiggør () skal kun implementeres for ustyrede ressourcer fordi de administrerede ressourcer frigøres automatisk af affaldssamleren.
  5. Adgangsspecificeren for metodens dispose () er offentlig, da den er defineret i interface IDisposable, og den ville blive implementeret af klassen, der implementerer denne grænseflade, og derfor skal den være offentlig. På den anden side har metoden finalize () beskyttet adgangsspecifikation, så den ikke skal være tilgængelig for noget medlem uden for klassen.
  6. Metoden disponerer () er hurtig og frigiver objektet med det samme, og det påvirker ikke ydelsesomkostningerne. Metoden færdiggøres () er langsommere og frigiver ikke de ressourcer, som objektet besidder med det samme.

Konklusion:

Det foreslås at anvende metodebortskaffelse () over metoden færdiggør (), da det er hurtigere end afsluttet. Det kan også kaldes når som helst når det er nødvendigt.