Jakie sa róznice pomiędzy metodami dispose() oraz finalize()?

2 odpowiedzi

Metoda finalize() jest wywoływana przez Garbage Collector gdy obiekt nie jest już w użyciu.


Metoda dispose  to zwykła metoda, którą użytkownik może wywołać, żeby zwolnić zasoby.

Metoda Finalize() jest wywoływana przez Garbage Collector, ale niewiadomo kiedy i niewiadomo czy w ogóle. Jedyny sposób na dostarczenie implementacji tej metody to napisanie swojego destruktora. Jednak GC może usuwać tylko obiekty, które są zasobami zarządzalnymi ('managed resources') z poziomu aplikacji. Występują też jednak zasoby, które nie są typu 'managed', takie jak połączenie do bazy czy uchwyt pliku. Dla nich musimy napisać metodę Dispose() i wywołać ją w odpowiednim momencie. W tej metodzie możemy np. zamknąć połączenie do bazy lub plik. Używając dyrektywy using{} niejawnie wywołujemy metodę Dispose(). 

Zaloguj się lub zarejestruj by dodać odpowiedź.


© 2019 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci