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.