Sobes.tech
Middle

Do czego służy interfejs IDisposable w C#?

sobes.tech AI

Odpowiedź od AI

Interfejs IDisposable jest używany do implementacji wzorca zwalniania zasobów, które są zarządzane poza środowiskiem CLR (np. deskryptory plików, połączenia sieciowe, uchwyty WinAPI).

Główne cele:

  • Deterministyczne zwalnianie zasobów: Pozwala na wyraźne zwolnienie zasobów niezarządzanych natychmiast, zamiast czekać na wywołanie finalizatora przez garbage collector (jeśli istnieje).
  • Zapobieganie wyciekom zasobów: Zapewnia, że krytyczne zasoby zostaną zwolnione po użyciu, nawet w przypadku wyjątków.
  • Użycie z słowem kluczowym using: Konstrukcja using automatycznie wywołuje metodę Dispose() obiektu implementującego IDisposable po zakończeniu bloku kodu, zapewniając niezawodne zwolnienie.

Implementacja obejmuje metodę Dispose() bez parametrów, która wykonuje zwolnienie zasobów. Często wzorzec obejmuje finalizator (destruktor) do zwolnienia zasobów, jeśli Dispose() nie został wywołany jawnie, ale zaleca się unikanie finalizatorów i poleganie na using.

public interface IDisposable
{
    void Dispose();
}