Sobes.tech
Middle

Milleks on C#-s vajalik liides IDisposable?

sobes.tech AI

Vastus AI-lt

IDisposable liides kasutatakse malli ressursside vabastamiseks, mida hallatakse väljaspool CLR-keskkonda (näiteks failide kirjeldajad, võrguliidesed, WinAPI-hendlid).

Peamised eesmärgid:

  • Deterministlik ressursside vabastamine: võimaldab selgelt vabastada mittehallatavaid ressursse kohe, mitte oodata, kuni kogujad kutsuvad finaliseerijat (kui see on).
  • Resursside lekkimise ennetamine: tagab, et kriitilised ressursid vabastatakse pärast kasutamist, isegi erandite korral.
  • Kasutamine koos võtmesõnaga using: using-struktuur kutsub automaatselt välja Dispose() meetodi objektile, mis implementeerib IDisposable, koodi lõpus, tagades usaldusväärse vabastamise.

Implementatsioon sisaldab parameetrita Dispose() meetodit, mis vabastab ressursid. Sageli sisaldab muster finaliseerijat (destruktorit), et vabastada ressursid juhul, kui Dispose() ei ole otseselt kutsutud, kuid soovitatakse vältida finaliseerijaid ja tugineda using-le.

public interface IDisposable
{
    void Dispose();
}