Sobes.tech
Junior — Middle

Můžete vysvětlit účel rozhraní IDisposable a jak jej používat při správě zdrojů?

sobes.tech AI

Odpověď od AI

Rozhraní IDisposable v jazyce C# je určeno k uvolnění neřízených zdrojů, jako jsou souborové deskriptory, připojení k databázím, sokety atd. Obsahuje metodu Dispose(), která se volá pro explicitní uvolnění zdrojů.

Použití IDisposable umožňuje kontrolovat dobu uvolnění zdrojů, což je důležité pro prevenci úniků.

Příklad použití:

class ResourceHolder : IDisposable
{
    private bool disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Uvolnění řízených zdrojů
            }
            // Uvolnění neřízených zdrojů
            disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}

Také se často používá konstrukce using, která automaticky volá Dispose():

using(var resource = new ResourceHolder())
{
    // práce s prostředkem
}
// Zde se automaticky volá Dispose()

Tímto způsobem IDisposable pomáhá správně spravovat zdroje a předcházet jejich únikům.