Garbage collector vs Klasy które implementują interfejs IDisposable

0

Chciałem się zapytać czy implementująć interfejs IDisposable w naszych klasach zyskujemy coś na styl destruktora z c++ ?
Jeżeli tak to nasze programy bedą działać dużo szybciej, dzięki temu ze zostanie usuniety obiekt w danej chwili niż zostanie zakwalifikowany do GarbageCollector.

Czy głownie korzystamy z implementacji tego interfejsu, przy pracy z strumieniami po to, by nie zapomnieć zamknąć strumienia? ( dyrektywa using )

0

Dispose służy do posprzątania po obiekcie, najczęściej zasobów niezarządzanych. Natomiast coś podobnego do destruktora z C++ możesz uzyskać przeciążając metodę Finalize, co można zrobić za pomocą składni takiej jak w C++:

class Something
{
    ~Something()
    {
        // tutaj jakieś sprzątanie
    }
}

Natomiast ta metoda nie zostanie odpalona tak jak w C++ gdy obiekt wychodzi ze scope, a dopiero przed sprzątnięciem go przez GC. Nie ma możliwości wcześniejszego zwolnienia zajmowanej przez obiekt pamięci, bo i jak? GC i tak musiałby przenieść obiekty leżące na stercie za danym obiektem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1