Skillnaden mellan kassera () och slutföra () i C #

Författare: Laura McKinney
Skapelsedatum: 2 April 2021
Uppdatera Datum: 11 Maj 2024
Anonim
Skillnaden mellan kassera () och slutföra () i C # - Teknologi
Skillnaden mellan kassera () och slutföra () i C # - Teknologi

Innehåll


Metoder förfogar över () och slutför () är metoderna för C # som åberopas för att frigöra de ostyrda resurserna som ett objekt har. Metoden dispose () definieras inuti gränssnittet IDisposable medan metoden finalize () definieras i klassobjektet. Den största skillnaden mellan kassera () och slutföra () är att metoden dispose() måste uttryckligen åberopas av användaren medan metoden avsluta() åberopas av sopor, precis innan föremålet förstörs. Låt oss studera några andra skillnader mellan dem med hjälp av ett jämförelsediagram som visas nedan.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelsekassera ()slutföra ()
DefinieratMetoden disponerar () definieras i gränssnittet IDisponerbart gränssnitt.Metoden slutföra () id definierad i klassen java.lang.object.
Syntaxpublic void Dispose () {
// Kassera koden här
}
skyddat tomrum slutföra () {
// slutföringskod här
}
åberopas Metoden dispose () åberopas av användaren.Metoden slutföra () åberopas av avfallssamlaren.
ÄndamålMetoddisponering () används för att frigöra icke-hanterade resurser när det åberopas.Metodfinalisering () används för att frigöra obehöriga resurser innan objektet förstörs.
GenomförandeMetoden disponerar () ska implementeras när det finns en nära () metod.Metoden slutföra () ska implementeras för outhanterade resurser.
ÅtkomstspecifikationMetoden disponerar () förklaras som offentlig.Metoden slutföra () förklaras som privat.
Verkan Metoden disponerar () är snabbare och kastar ett objekt direkt.Metoden slutför är långsammare jämfört med kassera
PrestandaMetoden disponerar () utför den omedelbara åtgärden, påverkar inte webbplatsens prestanda. Metoden slutföra () är långsammare påverkar webbplatsens prestanda.


Definition av dispose ()

Metoden dispose () släpper de outhanterade resurserna som innehas av ett klassobjekt. De icke hanterade resurserna är filer, dataförbindelser etc. Metoden disponerar () deklareras i gränssnittet IDisposeable och det implementeras av klassen genom att implementera gränssnittet IDisposable. Den här metoden kallas inte automatiskt. Programmeraren måste implementera det manuellt när du skapar en anpassad klass som kommer att användas av andra. Metoden har följande syntax:

public void dispose () {// Kassera koden här}

I ovanstående syntax kan du observera att metoden förklaras som offentlig. Det beror på att den här metoden definieras i gränssnittet IDisponerbart och det måste implementeras av klassen som implementerar detta gränssnitt. Så för att ge tillgänglighet till den genomförande klassen förklaras metoden som offentlig.


Denna metod åberopas manuellt av koden för ett program när den implementeras för att åberopa. Metodens prestanda är snabb, och det frigör direkt de resurser som innehas av objektets klass.

Definition av slutföra ()

Metoden finalize () definieras i objekt klass. Det används för saneringsaktiviteter. Denna metod kallas av avfallssamlaren när referensen till ett objekt inte används på länge. Soporuppsamlare frigör de hanterade resurserna automatiskt, men om du vill frigöra de ostyrda resurserna som filhantering, dataförbindelse etc. måste slutföringsmetoden implementeras manuellt. Soporuppsamlaren åberopar metoden slutförd () strax innan den förstör objektet fullständigt.

Syntaxen för metoden slutföra ():

Protected void finalize () {// finaliseringskod här}

I syntaxen ovan förklaras metoden slutföra () som skyddad. Anledningen bakom detta är att metoden slutföra () får inte vara tillgänglig utanför klassen, och den får endast vara tillgänglig för sopor.

Metoden finalize () påverkar kostnaden för prestanda eftersom den inte frigör minnet direkt. I C # kallas slutföringsmetoden automatiskt med destruktorer.

  1. Metoden disponerar () definieras i ett gränssnitt IDisposable. Å andra sidan definieras metoden slutföra () i klassen objekt.
  2. Metodens bortskaffning () måste manuellt anropas inuti koden av en programmerare, medan metoden slutföra automatiskt åberopas av sopor innan den förstör objektet.
  3. Metodavfallet kan åberopas när som helst, medan metoden som slutförs åberopas av avfallssamlaren när den konstaterar att det objektet inte har nämnts på länge.
  4. Metoden dispose () implementeras i en klass efter implementering av gränssnittet IDisposable. Metoden slutföra () måste bara implementeras för obemanade resurser eftersom de hanterade resurserna frigörs automatiskt av avfallssamlaren.
  5. Åtkomstspecifikationen för metodens dispose () är offentlig eftersom den definieras i gränssnittet IDisposable och det skulle implementeras av klassen som implementerar detta gränssnitt, och därför bör det vara offentligt. Å andra sidan har metoden slutföra () skyddad åtkomstspecifikation så att den inte ska vara tillgänglig för någon medlem utanför klassen.
  6. Metoden disponerar () är snabb och frigör objektet omedelbart, det påverkar inte prestandakostnaden. Metoden slutföra () är långsammare och frigör inte de resurser som objektet innehar direkt.

Slutsats:

Det föreslås att använda metodavfall () över metoden slutföra () eftersom det är snabbare än slutför. Det kan också kallas när som helst när det behövs.