Разлика между разпореждане () и финализиране () в C #

Автор: Laura McKinney
Дата На Създаване: 2 Април 2021
Дата На Актуализиране: 13 Може 2024
Anonim
Нулевая Мировая. 4 серия. StarMedia. Babich-Design. Документальный Фильм
Видео: Нулевая Мировая. 4 серия. StarMedia. Babich-Design. Документальный Фильм

Съдържание


Методите dispose () и finalize () са методите на C #, които са извикани, за да освободят неуправляемите ресурси, държани от даден обект. Методът dispose () се дефинира вътре в ID на интерфейса, а методът finalize () е дефиниран в обекта клас. Основната разлика между dispose () и finalize () е, че методът да се разпорежда() трябва да бъде изрично извикан от потребителя, докато методът финализира () се извиква от колектора за боклук, точно преди обектът да бъде унищожен. Нека изучим някои други разлики между тях с помощта на сравнителна диаграма, показана по-долу.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеизхвърлям ()финализиране ()
ДефинираниМетодът dispose () е дефиниран в интерфейса IDisposable интерфейс.Методът финализира () id, дефиниран в клас java.lang.object.
Синтаксиспублично невалидно Dispose () {
// Изхвърлете кода тук
}
защитена невалидност финализиране () {
// финализиращ код тук
}
ползвана Потребителят извиква метода dispose ().Методът finalize () се извиква от боклука.
ПредназначениеМетодът dispose () се използва за освобождаване на неуправляеми ресурси при всяко извикване.Методът finalize () се използва за освобождаване на неуправляеми ресурси, преди обектът да бъде унищожен.
изпълнениеМетодът dispose () трябва да се прилага винаги, когато има метод затваряне ().Методът finalize () трябва да се приложи за неуправляеми ресурси.
Спецификатор за достъпМетодът dispose () се обявява за публичен.Методът finalize () се декларира като частен.
действие Методът dispose () е по-бърз и моментално разпорежда обект.Методът за финализиране е по-бавен в сравнение с изхвърлянето
производителностМетодът разполага () извършва мигновено действие, следователно не влияе върху работата на уебсайтовете. Методът финализиране () е по-бавен, влияе на производителността на уебсайтовете.


Определение за изхвърляне ()

Методът dispose () освобождава неуправляемите ресурси, които се държат от обект от класа. Неуправляемите ресурси са файлове, връзки за данни и т.н. Методът dispose () се декларира в интерфейса IDisposeable и се реализира от класа чрез прилагане на интерфейса IDisposable. Този метод не се извиква автоматично. Програмистът трябва да го приложи ръчно, когато създавате персонализиран клас, който ще бъде използван от други. Методът има следния синтаксис:

public void dispose () {// Код на разположение тук}

В горния синтаксис можете да забележите, че методът е деклариран като публичен. Това е така, защото този метод е дефиниран в ID-интерфейса на интерфейса и трябва да бъде реализиран от класа, който реализира този интерфейс. Така че, за да се осигури достъпност до класа на изпълнение, методът се декларира като публичен.

Този метод се извиква ръчно от кода на програма, тъй като е реализиран за извикване. Изпълнението на методите е бързо и незабавно освобождава ресурсите, държани от обекта на клас.


Определение за финализиране ()

Методът finalize () е дефиниран в обект клас. Използва се за дейности по почистване. Този метод се нарича от събирача на боклук, когато препратката към даден обект не се използва дълго време. Garbage collector освобождава управляваните ресурси автоматично, но ако искате да освободите неуправляемите ресурси, като обработка на файлове, връзка с данни и т.н., методът на финализиране трябва да се приложи ръчно. Събирачът на боклук извиква метода finalize (), точно преди да унищожи обекта напълно.

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

защитена void finalize () {// окончателен код тук}

В синтаксиса по-горе методът finalize () се декларира като защитен. Причината за това е, че методът finalize () не трябва да е достъпен извън класа и трябва да е достъпен само за боклукосъбирателя.

Методът finalize () влияе върху цената на изпълнението, тъй като не освобождава паметта мигновено. В C # методът за финализиране се извиква автоматично с деструктори.

  1. Методът dispose () е определен в интерфейс IDisposable, От друга страна, методът finalize () е дефиниран в класа обект.
  2. Методът dispose () трябва да бъде извикан ръчно вътре в кода от програмист, докато финализирането на метода се извиква автоматично от колектора за боклук, преди да унищожи обекта.
  3. Методът за изхвърляне може да се използва по всяко време, докато финализирането на метода се извиква от събирача на боклук, когато установи, че този обект не е рефериран от дълго време.
  4. Методът dispose () се реализира в клас след реализиране на интерфейса IDisposable. Методът finalize () трябва да се прилага само за неуправляеми ресурси защото управляваните ресурси автоматично се освобождават от боклука.
  5. Спецификаторът за достъп на метода dispose () е публичен, тъй като е дефиниран в интерфейса IDisposable и би се реализирал от класа, който реализира този интерфейс, следователно трябва да е публичен. От друга страна, методът finalize () има защитен спецификатор на достъпа, така че да не е достъпен за всеки член извън класа.
  6. Методът dispose () е бърз и освобождава обекта мигновено, следователно не оказва влияние върху цената на изпълнение. Методът finalize () е по-бавен и не освобождава ресурсите, държани от обекта моментално.

Заключение:

Предлага се да се използва метод dispose () над метода finalize (), тъй като е по-бърз от финализирането. Също така, може да се нарече по всяко време, когато е необходимо.