Sobes.tech
Junior — Middle

Na czym polega cel interfejsu IDisposable w .NET i jak go używać?

sobes.tech AI

Odpowiedź od AI

Interfejs IDisposable w .NET służy do ręcznego zwalniania niezarządzanych zasobów (np. deskryptorów plików, połączeń z bazą danych), gdy obiekt nie jest już potrzebny.

Użycie:

  • Klasa implementuje IDisposable i nadpisuje metodę Dispose(), w której zwalnia zasoby.
  • W kodzie, w którym używany jest obiekt, wywołuje się Dispose() jawnie lub stosuje konstrukcję using, która gwarantuje wywołanie Dispose() nawet w przypadku wyjątków.

Przykład:

class ResourceHolder : IDisposable
{
    private bool disposed = false;
    public void Dispose()
    {
        if (!disposed)
        {
            // Zwolnienie zasobów
            disposed = true;
            GC.SuppressFinalize(this);
        }
    }

    ~ResourceHolder()
    {
        Dispose();
    }
}

// Użycie
using (var resource = new ResourceHolder())
{
    // praca z zasobem
}
// Tutaj automatycznie wywoła się Dispose()