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:usingstruktūra automatiškai iškviečiaDispose()metodą objektui, kuris įgyvendinaIDisposable, 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();
}