Sobes.tech
Junior — Middle

Môžete vysvetliť účel rozhrania IDisposable a ako ho použiť pri správe zdrojov?

sobes.tech AI

Odpoveď od AI

Rozhranie IDisposable v jazyku C# je určené na uvoľnenie ne-riadených zdrojov, ako sú súborové deskriptory, pripojenia k databázam, sokety a podobne. Obsahuje metódu Dispose(), ktorá sa volá na explicitné uvoľnenie zdrojov.

Použitie IDisposable umožňuje kontrolovať čas uvoľnenia zdrojov, čo je dôležité na prevenciu únikov.

Príklad použitia:

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)
            {
                // Uvoľnenie spravovaných zdrojov
            }
            // Uvoľnenie ne-riadených zdrojov
            disposed = true;
        }
    }

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

Často sa používa aj konštrukcia using, ktorá automaticky volá Dispose():

using(var resource = new ResourceHolder())
{
    // práca so zdrojom
}
// Tu sa automaticky volá Dispose()

Týmto spôsobom IDisposable pomáha správne spravovať zdroje a predchádzať ich únikom.