Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp disponavimo () ir baigimo () C #

Metodai, kuriais disponuojami () ir baigiami (), yra C # metodai, kuriais remiamasi, kad būtų išlaisvinti nevaldomi ištekliai, esantys objekte. Išmetimo () metodas yra apibrėžtas sąsajos IDisposable, o metodas baigiamas () yra apibrėžtas klasės objekto viduje. Pagrindinis skirtumas tarp disponavimo () ir baigimo () yra tas, kad metodas disponuoti () turi būti aiškiai nurodytas naudotojui, o metodas baigiamas (), kurį naudoja šiukšlių surinkėjas, prieš pat sunaikinant objektą. Išnagrinėkime kitus skirtumus tarp jų, naudojant žemiau pateiktą palyginimo lentelę.

Palyginimo diagrama

Palyginimo pagrindasdisponuoti ()baigti ()
ApibrėžtaMetodas šalinamas () yra apibrėžtas sąsajoje IDisposable interface.Metodas baigiamas () id, apibrėžtas java.lang.object klasėje.
Sintaksėpublic void Pašalinti () {
// Čia pašalinkite kodą
}
apsaugotas negaliojantis () {
// užbaigimo kodas čia
}
PakviestasMetodas disponuoja () vartotojas.Metodas baigiamas (), kurį nurodo šiukšlių surinkėjas.
TikslasMetodas disponuoti () naudojamas nepanaudotiems ištekliams išlaisvinti, kai jis naudojamas.Metodas baigiamas () naudojamas nepanaudotiems ištekliams išlaisvinti prieš objektą sunaikinant.
ĮgyvendinimasMetodas šalinamas () turi būti įgyvendintas, kai yra glaudus () metodas.Metodas baigiamas () turi būti įgyvendintas nevaldomiems ištekliams.
Prieigos specifikacijaMetodas disponuojamas () yra paskelbtas viešu.Metodas baigiamas () paskelbtas kaip privatus.
VeiksmasMetodas šalinamas () yra greitesnis ir iškart pašalinamas objektas.Metodas baigiamas, palyginti su disponavimu
SpektaklisMetodas pašalina () atlieka momentinį veiksmą, todėl neturi įtakos svetainių veikimui.Metodas baigtas () būti lėtesnis, o tai daro įtaką svetainių veikimui.

Išmetimo apibrėžimas ()

Atmetimo () metodas atleidžia nevaldomus išteklius, kuriuos turi klasės objektas. Nei valdomi ištekliai yra failai, duomenų ryšiai ir tt. Metodas disponuojamas () yra deklaruojamas sąsajoje „ IDisposeable“, o klasė ją įgyvendina įgyvendindama sąsają „IDisposable“. Šis metodas nėra vadinamas automatiškai. Programuotojas turi ją įdiegti rankiniu būdu, kai kuriate pasirinktinę klasę, kuri bus naudojama kitiems. Metodas turi tokią sintaksę:

 viešoji negalioja disponuoja () {// Šalinti kodą čia} 

Pirmiau pateiktoje sintaksėje galite pastebėti, kad metodas yra paskelbtas viešu. Taip yra todėl, kad šis metodas yra apibrėžtas sąsajoje IDisposable ir jis turi būti įgyvendintas klasėje, įgyvendinančioje šią sąsają. Taigi, siekiant užtikrinti prieigą prie įgyvendinimo klasės, metodas yra paskelbtas viešu.

Šis metodas yra naudojamas rankiniu būdu pagal programos kodą, kai jis įgyvendinamas. Metodų veikimas yra greitas, ir iš karto atlaisvina klasės objekto turimus išteklius.

Baigimo apibrėžimas ()

Baigiamojo () metodas yra apibrėžtas objekto klasėje. Jis naudojamas valymo veiklai. Šį metodą šaukia šiukšlių surinkėjas, kai objekto nuoroda nenaudojama ilgą laiką. Šiukšlių surinkėjas automatiškai išlaisvina valdomus išteklius, tačiau, jei norite išlaisvinti nevaldomus išteklius, pvz., Failų tvarkyklę, duomenų ryšį ir tt, baigimo metodas turi būti įgyvendinamas rankiniu būdu. Šiukšlių surinkėjas kreipiasi į užbaigtą metodą () prieš jį visiškai sunaikindamas.

Metodo sintaksė baigiama ():

 apsaugotas void finalize () {// užbaigimo kodas čia} 

Pirmiau pateiktoje sintaksėje metodas baigiamas () yra paskelbtas saugomu. Priežastis yra ta, kad metodas baigtas () neturi būti prieinamas iš klasės, ir jis turi būti prieinamas tik šiukšlių surinkėjui.

Baigti () metodas daro įtaką našumo kainai, nes ji neatlaisvina atminties akimirksniu. „C #“ užbaigimo metodas automatiškai vadinamas su destruktoriais.

Pagrindiniai skirtumai tarp disponavimo () ir baigimo ()

  1. Metodas šalinamas () yra apibrėžtas sąsajoje, kurią galima naudoti . Kita vertus, metodas baigiamas () yra apibrėžtas klasės objekte .
  2. Metodas, kuriuo disponuojamas (), turi būti rankiniu būdu įvestas kodo viduje pagal programuotoją, o metodas baigiamas automatiškai, kai ši medžiaga sunaikina objektą.
  3. Metodas gali būti panaudotas bet kuriuo metu, o metodas užbaigiamas šiukšlių surinkėjas, kai jis nustato, kad šis objektas nėra ilgai susijęs.
  4. Metodas disponuojamas () yra įgyvendintas klasėje po to, kai bus įdiegta sąsaja IDisposable. Metodas baigiamas () turi būti įgyvendintas tik nevaldomiems ištekliams, nes tvarkomi ištekliai automatiškai atleidžiami šiukšlių surinkėjas.
  5. Metodo disponavimo specifikacija () yra vieša, nes ji yra apibrėžta sąsajoje „IDisposable“, ir ją įgyvendintų klasė, įgyvendinanti šią sąsają, todėl ji turėtų būti vieša. Kita vertus, metodas baigtas () turi apsaugotą prieigos specifiką, kad jis neturėtų būti prieinamas jokiam nariui už klasės ribų.
  6. Metodas šalinamas () yra greitas ir iš karto atlaisvina objektą, todėl jis neturi įtakos našumo kainai. Metodas baigiamas () yra lėtesnis ir neatlaisvina objekto turimų išteklių iš karto.

Išvada:

Siūloma naudoti metodą () per metodas baigti (), nes jis yra greičiau nei baigtas. Be to, prireikus tai galima pavadinti bet kuriuo metu.

Top