Рецоммендед, 2021

Избор Уредника

Разлика између диспосе () и финализе () у Ц #

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

Цомпарисон Цхарт

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

Дефиниција диспос ()

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

 публиц воид диспосе () {/ / Диспосе цоде хере} 

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

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

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

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

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

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

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

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

Кључне разлике између диспос () и финализирања ()

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

Закључак:

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

Top