Sobes.tech
Middle

Интерфейси IDisposable дар C# барои чӣ аст?

sobes.tech AI

Ҷавоб аз AI

Интерфейси IDisposable барои иҷрои намунаи озод кардани захираҳое, ки берун аз муҳити CLR идора мешаванд (масалан, дескрипторҳои файлҳо, пайвастҳои шабакавӣ, ҳендлҳои WinAPI).

Мақсадҳои асосӣ:

  • Озод кардани қарории захираҳо: Имкон медиҳад, ки захираҳои ғайриҳуқуқӣ фавран озод карда шаванд, ба ҷои интизор шудан барои даъвати финализатор (агар вуҷуд дошта бошад) аз ҷониби ҷамъкунандаи партов.
  • Пешгирии ҷорӣ шудани захираҳо: Мувофиқ мекунад, ки захираҳои муҳим пас аз истифода озод карда шаванд, ҳатто агар истисноҳо рух диҳанд.
  • Истифода бо калимаи калидии using: Қурили using автоматӣ методи Dispose()-и объекти, ки IDisposable-ро иҷро мекунад, дар охири блоки код даъват мекунад, ки озодкунии боэътимодро таъмин мекунад.

Иҷрои он дохил мекунад, ки методи Dispose() бе параметрҳо, ки захираҳоро озод мекунад. Одатан, намуна дорои финализатор (деструктор) барои озод кардани захираҳо дар ҳолате, ки Dispose() ба таври ошкоро даъват нашудааст, мебошад, аммо тавсия дода мешавад, ки финализаторҳоро канор гузоред ва ба using такя кунед.

public interface IDisposable
{
    void Dispose();
}