Sobes.tech
Middle

Kam skirtas C# kalboje IDisposable sąsaja?

sobes.tech AI

Atsakymas iš AI

IDisposable sąsaja naudojama norint įgyvendinti išteklių atlaisvinimo modelį, kuris valdomas už CLR aplinkos ribų (pavyzdžiui, failų aprašytojai, tinklo ryšiai, WinAPI rankenėlės).

Pagrindiniai tikslai:

  • Deterministinis išteklių atlaisvinimas: leidžia aiškiai atlaisvinti nevaldomus išteklius nedelsiant, o ne laukti, kol surinkėjas iškvies finalizatorių (jei jis yra).
  • Išteklų nutekėjimo prevencija: užtikrina, kad kritiniai ištekliai bus atlaisvinti po naudojimo, net ir išimčių atveju.
  • Naudojimas kartu su raktiniu žodžiu using: using struktūra automatiškai iškviečia Dispose() metodą objektui, kuris įgyvendina IDisposable, pabaigoje, užtikrindama patikimą atlaisvinimą.

Implementacija apima be parametrų Dispose() metodą, kuris atlaisvina išteklius. Dažnai modelis apima finalizatorių (destruktorių), kuris atlaisvina išteklius, jei Dispose() nebuvo iškviestas aiškiai, tačiau rekomenduojama vengti finalizatorių ir pasikliauti using.

public interface IDisposable
{
    void Dispose();
}