Разлика између располагања () и финализације () у Ц #

Аутор: Laura McKinney
Датум Стварања: 2 Април 2021
Ажурирати Датум: 10 Може 2024
Anonim
МАЛЬДИВЫ, которые в самое сердце. Большой выпуск. 4K
Видео: МАЛЬДИВЫ, которые в самое сердце. Большой выпуск. 4K

Садржај


Методе диспосе () и финализе () су методе Ц # за које се позива да се ослободе неуправљаних ресурса у објекту. Метода диспосе () је дефинирана унутар ИД-а интерфејса, док је метода финализе () дефинирана унутар објекта класе. Главна разлика између диспосе () и финализе () је у томе што је метода располагати() корисник се мора изричито позвати, а поступак финализе () позива га сакупљач смећа, непосредно пре него што је објекат уништен. Проучимо неке друге разлике међу њима уз помоћ упоредног графикона приказаног доле.

  1. Упоредни графикон
  2. Дефиниција
  3. Кључне разлике
  4. Закључак

Упоредни графикон

Основе за упоређивањерасполагати ()финализе ()
ДефинисанМетода диспосе () је дефинисана у интерфејсу ИДиспосабле интерфејс.Метода финализе () ид дефинирана у класи јава.ланг.објецт.
Синтаксајавно неважеће Диспосе () {
// Одложите код овде
}
протецтед воид финализе () {
// код за финализацију овде
}
Инвокед Корисник позива методу диспосе ().Метода финализе () позива се сакупљачем смећа.
СврхаМетода диспосе () користи се за ослобађање неуправљаних ресурса кад год се она позива.Метода финализе () користи се за ослобађање неуправљаних ресурса пре уништења објекта.
ИмплементацијаМетода диспосе () треба применити кад постоји метода цлосе ().Метода финализе () треба се имплементирати за неуправљане ресурсе.
Спецификатор приступаМетода диспосе () је декларирана као јавна.Метода финализе () је декларирана као приватна.
поступак Метода диспосе () је бржа и одмах распоређује предмет.Метода финализације је спорија у односу на одлагање
ПерформансеМетода располаже () врши тренутну акцију, стога не утиче на перформансе веб локација. Спора метода финализације () утјече на перформансе веб локација.


Дефиниција располагања ()

Метода диспосе () ослобађа неуправљане ресурсе које држи објект класе. Неуправљани ресурси су датотеке, дата везе итд. Метода диспосе () је декларирана у интерфејсу ИДиспосеабле а класа га проводи имплементацијом интерфејса ИДиспосабле. Ова метода се не позива аутоматски. Програмер мора да га ручно имплементира када креирате прилагођену класу коју ће користити други. Метода има следећу синтаксу:

јавно неважеће располагање () {// Овде је расположив код}

У горњој синтакси можете приметити да је метода декларисана као јавна. То је зато што је ова метода дефинирана у ИД-у интерфејса и може је имплементирати класа која имплементира ово сучеље. Дакле, да би се обезбедила доступност класе имплементације, метода је декларирана као јавна.

Ову методу се ручно позива кодом програма док се проводи за позивање. Перформансе метода су брзе и тренутно ослобађају ресурсе које поседује предмет класе.

Дефиниција финализе ()

Метода финализе () је дефинисана у објекта класа. Користи се за активности чишћења. Ову методу назива сакупљач смећа када се референца на неки предмет не користи дуже време. Скупљач смећа аутоматски ослобађа управљане ресурсе, али ако желите да се ослободе неуправљаних ресурса, као што су руковање датотекама, веза података, итд., Метода финализације мора се имплементирати ручно. Скупљач смећа позива методу финализе () непосредно пре него што потпуно уништи објект.


Синтакса методе финализе ():

протецтед воид финализе () {// код за финализацију овде}

У горњој синтакси, метода финализе () је проглашена заштићеном. Разлог за то је што метода финализе () не смије бити доступна изван класе, већ мора бити доступна само сакупљачу смећа.

Метода финализе () утиче на трошкове перформанси, јер не ослобађа меморију одмах. У Ц # методу финализације се аутоматски позива помоћу деструктора.

  1. Метода диспосе () је дефинисана у интерфејсу ИДиспосабле. С друге стране, метода финализе () је дефинисана у класи објекта.
  2. Метод диспосе () мора програмер ручно позвати унутар кода, док методу финализације аутоматски призива сакупљач смећа пре него што уништи објект.
  3. Одлагање методе може се позвати у било које вријеме, док се за финализирање метода позива сакупљач смећа кад утврди да се на тај објект дуго није реферирао.
  4. Метода диспосе () се имплементира у класу након имплементације интерфејса ИДиспосабле. Метода финализе () мора се имплементирати само за неуправљани ресурси зато што сакупљач смећа аутоматски ослобађа управљане ресурсе.
  5. Спецификатор приступа диспосе () је јавни као што је дефинирано у ИД-у интерфејса и може га имплементирати класа која имплементира ово сучеље, па би требао бити јаван. С друге стране, метода финализе () има заштићени спецификатор приступа тако да не би требао бити доступан ниједном члану изван класе.
  6. Метода диспосе () је брза и одмах ослобађа објект, не утиче на трошкове перформанси. Метода финализе () је спорија и не ослобађа ресурсе које објект држи одмах.

Закључак:

Предлаже се употреба методе диспосе () преко методе финализе () јер је бржа од финализације. Такође, може се назвати било када, када је то потребно.