The ключова різниця між dispose () та finalize () є те dispose () повинен бути явно викликаний програмістом, тоді як finalize () викликається сміттєзбірником перед знищенням об'єкта.
Dispose () - це метод закрити або випустити некеровані ресурси, такі як файли, потоки, що утримуються об'єктом. Фіналізація - це метод виконання операцій очищення на некерованих ресурсах, що зберігаються поточним об'єктом до знищення об'єкта.
1. Огляд та ключові відмінності
2. Що розпоряджається ()
3. Що остаточно ()
4. Подібність між розпорядженням () та завершенням ()
5. Бічне порівняння - розпоряджайтесь () проти остаточного () в табличній формі
6. Підсумок
Однією з найважливіших переваг .NET Framework є те, що вона забезпечує автоматичне вивезення сміття. Він автоматично звільняє пам'ять об'єктів, які не використовуються. У мовах програмування, таких як C і C ++, програмісту належить самостійно керувати керуванням пам'яттю. Але в таких мовах, як C #, побудований на .NET Framework, передбачено збирання сміття. Це допомагає керувати пам'яттю. Його не можна використовувати для звільнення ресурсів некерованої пам'яті. Для досягнення цього завдання може бути використаний метод dispose ().
Метод dispose () може використовуватися для звільнення таких ресурсів, як підключення до бази даних, обробники файлів тощо. Цей метод не викликається автоматично. Тому програміст повинен реалізувати цей метод. Як тільки цей метод викликається, вивільняється пам'ять для конкретного некерованого ресурсу. Цей спосіб оголошений в інтерфейсі IDisposeable.
Метод фіналізації викликається сміттєзбірником лише тоді, коли посилання на об'єкт не використовується далі. Цей метод називається безпосередньо перед знищенням об'єкта. Цей метод реалізується за допомогою деструктора. Метод завершення визначений у класі java.lang.object. Цей спосіб оголошено захищеним. Він не оголошений як публічний, щоб уникнути доступу інших класів. Загалом, метод доопрацювання може мінімізувати продуктивність програми, оскільки він не звільняє пам'ять миттєво.
dispose () vs finalize () | |
Dispose () - це метод закрити або випустити некеровані ресурси, такі як файли, потоки, що утримуються об'єктом. | Фіналізація - це метод виконання операцій очищення некерованих ресурсів, що зберігаються поточним об'єктом до знищення об'єкта. |
Об'єктивна | |
Метод розпорядження використовується для звільнення некерованих ресурсів при його виклику. | Метод фіналізації використовується для звільнення некерованих ресурсів до знищення об'єкта. |
Визначений інтерфейс або клас | |
Розпорядження () визначається в інтерфейсі ID, що доступний для встановлення. | Фіналізація () визначена в класі java.lang.object. |
Метод виклику | |
Метод розпорядження викликається програмістом. | Метод доопрацювання викликається сміттєзбірником. |
Специфікатор доступу | |
Метод розпорядження є загальнодоступним. | Метод завершення захищений. |
Швидкість | |
Спосіб утилізації викликається миттєво. | Метод доопрацювання викликається повільно. |
Продуктивність | |
Утилізація не зведе до мінімуму ефективність програми. | Метод завершення може мінімізувати продуктивність програми. |
У цій статті обговорюється різниця між методами розпорядження та доопрацювання у C #. Різниця між dispose () та finalize () полягає в тому, що програміст повинен виразно посилатись на dispose (), тоді як збирач сміття finalize () викликає перед знищенням об'єкта.
1.Виконання завершити та розпоряджатися очищенням некерованих ресурсів. Доступний тут
2.Шарма, Нітя. "Назад до основ - утилізуйте Vs Finalize." C # Куточок. Доступний тут
1.'Csharp Logo'By Andres15alvarez - Власна робота, (CC BY-SA 4.0) через Commons Wikimedia