Skirtumas tarp disponuoti () ir baigti () C #

Autorius: Laura McKinney
Kūrybos Data: 2 Balandis 2021
Atnaujinimo Data: 13 Gegužė 2024
Anonim
Eric X. Li: A tale of two political systems
Video.: Eric X. Li: A tale of two political systems

Turinys


Metodai disponuoti () ir baigti () yra C # metodai, kurie naudojami norint atlaisvinti nevaldomus resursus, kuriuos turi objektas. Dispose () metodas yra apibrėžtas vienkartinės sąsajos viduje, tuo tarpu metodas finalize () yra apibrėžtas klasės objekto viduje. Pagrindinis skirtumas tarp disponuoti () ir baigti () yra tas, kad metodas disponuoti() turi aiškiai remtis vartotojas, o metodas baigti () yra šaukiamas šiukšlių surinkėjo, prieš pat daiktą sunaikinant. Leiskite mums išnagrinėti kai kuriuos kitus skirtumus, naudodamiesi žemiau pateikta palyginimo lentele.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasdisponuoti ()baigti ()
ApibrėžtaMetodas dispose () yra apibrėžtas vartotojo sąsajoje, kurioje galima naudoti vienkartinę sąsają.Metodas finalize () id apibrėžtas java.lang.object klasėje.
Sintaksėpublic void išmesk () {
// Šalinkite kodą čia
}
saugoma tuštuma baigta () {
// baigimo kodas čia
}
Pakviestas Naudotojas iškviečia metodą dispose ().Šiukšlių surinkėjas pasitelkia metodą finalize ().
TikslasMetodas dispose () yra naudojamas nevaldomiems ištekliams išlaisvinti, kai tik jis yra iškviečiamas.Metodas finalize () naudojamas norint nevaldyti resursus išlaisvinti prieš sunaikinant objektą.
ĮgyvendinimasMetodas dispose () turi būti įdiegtas, kai yra artimas () metodas.Turi būti įdiegtas nevaldomų išteklių metodas „finalize ()“.
Prieigos specifikatoriusMetodas dispose () paskelbtas viešu.Metodas finalize () deklaruojamas kaip privatus.
Veiksmas Metodas dispose () yra greitesnis ir akimirksniu pašalina objektą.Metodas, palyginti su disponavimu, yra lėtesnis
SpektaklisMetodas disposed () atlieka momentinį veiksmą, todėl neturi įtakos svetainių našumui. Metodas, kurio pabaiga () yra lėtesnis, daro įtaką svetainių našumui.


Disponuoti apibrėžimas ()

Dispose () metodas išlaisvina nevaldomus išteklius, kuriuos laiko klasės objektas. Nevaldomi ištekliai yra failai, duomenų ryšiai ir kt. Sąsajoje deklaruojamas metodas dispose () Neįmanoma ir tai įgyvendina klasė, įgyvendindama sąsają, kurią galima identifikuoti. Šis metodas nėra vadinamas automatiškai. Programuotojas turi tai įgyvendinti rankiniu būdu, kai kuriate pasirinktinę klasę, kurią naudos kiti. Metodas turi tokią sintaksę:

public void dispose () {// disponuoti kodu čia}

Aukščiau pateiktoje sintaksėje galite pastebėti, kad metodas paskelbtas viešu. Taip yra todėl, kad šis metodas yra apibrėžtas vienkartinėje sąsajoje ir jį turi įgyvendinti klasė, kuri įgyvendina šią sąsają. Taigi, siekiant užtikrinti prieinamumą įgyvendinančiai klasei, metodas paskelbtas viešu.

Šis metodas yra iškviečiamas rankiniu būdu pagal programos kodą, kai jis įgyvendinamas paleisti. Metodų atlikimas yra greitas ir tai akimirksniu išlaisvina klasės objekto turimus išteklius.


Apibrėžimo pabaiga ()

Baigimo () metodas apibrėžtas objektas klasė. Jis naudojamas valymo veiklai. Šis metodas vadinamas šiukšlių surinkėju, kai objekto nuoroda ilgą laiką nenaudojama. Šiukšlių surinkėjas automatiškai išlaisvina valdomus išteklius, tačiau jei norite atlaisvinti nevaldomus išteklius, tokius kaip failų tvarkyklė, duomenų ryšys ir kt., Baigimo būdas turi būti įdiegtas rankiniu būdu. Šiukšlių surinkėjas iškviečia metodą finalize () prieš pat visiškai sunaikinant objektą.

Metodo sintaksė užbaigiama ():

apsaugota negaliojanti baigti () {// baigimo kodas čia}

Aukščiau pateiktoje sintaksėje metodas finalize () skelbiamas kaip apsaugotas. Priežastis yra ta, kad metodas finalize () neturi būti prieinamas iš klasės, o prieinamas tik šiukšlių surinkėjui.

Baigimo () metodas daro įtaką atlikimo kainai, nes jis akimirksniu neatlaisvina atminties. C # baigimo būdas automatiškai vadinamas destruktoriais.

  1. Metodas dispose () yra apibrėžtas sąsajoje Vienkartinis. Kita vertus, klasėje yra apibrėžtas metodas finalize () objektas.
  2. Programuotojas turi rankiniu būdu iškviesti metodą dispose (), o šiukšlių surinkėjas automatiškai iškviečia metodą, kol jis sunaikins objektą.
  3. Atlikti metodą galima bet kada, tuo tarpu šiukšlių surinkėjas pasinaudoja baigtu metodu, kai nustato, kad objektas ilgą laiką nebuvo nurodytas.
  4. Metodas dispose () įgyvendinamas klasėje įdiegus sąsają, kuri yra nenaudojama. Metodas finalize () turi būti įgyvendintas tik nevaldomi ištekliai nes tvarkomus išteklius automatiškai išlaisvina šiukšlių surinkėjas.
  5. Metodo dispose () prieigos specifikatorius yra viešas, nes jis yra apibrėžtas identifikuojamoje sąsajoje, ir jį įgyvendintų klasė, įgyvendinanti šią sąsają, taigi ji turėtų būti vieša. Kita vertus, metodas finalize () turi apsaugotą prieigos specifikatorių, kad jis neturėtų būti prieinamas jokiems nariams, nepriklausantiems klasei.
  6. Metodas dispose () yra greitas ir akimirksniu išlaisvina objektą, taigi, tai nedaro įtakos atlikimo kainai. Metodas finalize () yra lėtesnis ir akimirksniu neatlaisvina objekto turimų išteklių.

Išvada:

Siūloma naudoti metodą dispose () per metodą finalize (), nes jis yra greitesnis nei baigtas. Be to, prireikus jis gali būti vadinamas bet kuriuo metu.