Rekommenderas, 2024

Redaktionen

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

Metoder avyttra () och slutföra () är metoderna för C # som åberopas för att frigöra de obestridda resurserna som innehas av ett objekt. Metoden Dispose () definieras inuti gränssnittet IDisposable medan metoden slutför () definieras inuti klassobjektet. Huvudskillnaden mellan kassera () och slutföra () är att metoden kasseras () måste uttryckligen åberopas av användaren, medan metoden slutför () påkallas av sopsamlare, precis innan objektet förstörs. Låt oss studera några andra skillnader mellan dem med hjälp av ett jämförelseskart som visas nedan.

Jämförelsediagram

Grunder för jämförelsekassera ()slutföra ()
DefinieradMetoden Dispose () definieras i gränssnittet IDisposable gränssnitt.Metoden slutför () id definierad i klassen java.lang.object.
Syntaxpublic void Dispose () {
// Kassera koden här
}
skyddad tomgång slutföra () {
// slutkod här
}
åberopasMetoden disponerar () åberopas av användaren.Metoden slutför () åberopas av sopsamlare.
ÄndamålMetoden Dispose () används för att frigöra omanagda resurser när det är påkallat.Metoden slutför () används för att frigöra omanagda resurser innan objektet förstörs.
GenomförandeMetoden Dispose () ska genomföras när det finns en nära () -metod.Metoden slutför () ska genomföras för omanagda resurser.
Access specifierMetoden Dispose () är deklarerad som offentlig.Metoden slutför () förklaras som privat.
VerkanMetoden avyttra () är snabbare och förfogar omedelbart ett objekt.Metoden avslutar är långsammare jämfört med att bortskaffas
PrestandaMetoden disponerar () utför den momentana åtgärden därmed påverkar inte prestandan av webbplatser.Metoden slutför () blir långsammare påverkar webbplatsernas prestanda.

Definition av bortskaffa ()

Metoden Dispose () släpper ut de omanagda resurserna som innehas av ett objekt av klassen. De omanagda resurserna är filer, dataanslutningar, etc. Metoden som kasseras () förklaras i gränssnittet ID-lösbar och den implementeras av klassen genom att implementera gränssnittet IDisposable. Denna metod kallas inte automatiskt. Programmeraren måste genomföra den manuellt när du skapar en anpassad klass som kommer att användas av andra. Metoden har följande syntax:

 offentligt ogiltigt kassera () {// Kassera kod här} 

I ovanstående syntax kan du observera att metoden är deklarerad som allmän. Det beror på att denna metod definieras i gränssnittet IDisposable och den måste implementeras av den klass som implementerar detta gränssnitt. Så för att ge tillgänglighet till implementeringsklassen förklaras metoden som allmän.

Denna metod aktiveras manuellt av koden för ett program som det implementeras för att åberopa. Metoden prestanda är snabb, och det frigör genast de resurser som innehas av objektet för en klass.

Definition av slutföra ()

Metoden finalize () definieras i objektklassen . Den används för rengöringsaktiviteter. Denna metod kallas av sopsamlare när referens för ett objekt inte används under en längre tid. Sopsamlare frigör de hanterade resurserna automatiskt, men om du vill frigöra de omanagda resurserna som filhandtag, dataanslutning etc. måste slutförandet sättet implementeras manuellt. Sopsamlaren påstår att metoden slutför () precis innan den förstör objektet helt.

Metodens syntax slutför ():

 skyddad tomgång slutför () {// slutkod här} 

I syntaxen ovan avslutas metoden () deklareras som skyddad. Anledningen till detta är att metoden slutför () inte vara tillgänglig från utsidan av klassen, och den får endast vara tillgänglig för sopsamlare.

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

Viktiga skillnader mellan bortskaffa () och slutföra ()

  1. Metoden Dispose () definieras i ett gränssnitt IDisposable . Å andra sidan definierar metoden () definieras i klassobjektet .
  2. Metoden kassera () måste manuellt åberopas inuti koden av en programmerare, medan metoden slutföres automatiskt påkallas av sopsamlare innan det förstör objektet.
  3. Metoden som kan kasseras kan när som helst åberopas, medan förfarandet avslutas påkallas av sopsamlare när det konstateras att objektet inte har refererats länge.
  4. Metoden Dispose () implementeras i en klass efter implementering av gränssnittet IDisposable. Metoden slutför () måste endast genomföras för omanagda resurser eftersom de hanterade resurserna automatiskt frigörs av sopor.
  5. Åtkomstspecifikationen för metoden Dispose () är offentlig som den definieras i gränssnittet IDisposable och den skulle implementeras av den klass som implementerar detta gränssnitt, därför borde det vara offentligt. Å andra sidan har metoden slutförts () skyddad åtkomstspecifik, så att den inte ska vara tillgänglig för någon medlem utanför klassen.
  6. Metoden Dispose () är snabb och frigör objektet direkt, vilket påverkar inte prestationskostnaden. Metoden slutför () är långsammare och frigör inte genast de resurser som objektet behåller.

Slutsats:

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

Top