Sobes.tech
Junior — Middle

Оё шумо метавонед мақсади интерфейси IDisposable ва истифодаи он дар идоракунии захираҳоро шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Интерфейси IDisposable дар C# барои озод кардани захираҳои ғайриҳокимшуда, монанди дескрипторҳои файлҳо, пайвастагиҳо бо базаи додаҳо, сокетҳо ва ғайра пешбинӣ шудааст. Он дорои як метод Dispose() мебошад, ки барои озод кардани равонашудаи захираҳо даъват мешавад.

Истифодаи IDisposable имкон медиҳад, ки вақти озод кардани захираҳоро назорат кард, ки барои пешгирии шикастаниҳо муҳим аст.

Маслиҳат барои истифода:

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)
            {
                // озод кардани захираҳои идорашаванда
            }
            // озод кардани захираҳои ғайриҳокимшуда
            disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}

Ҳамчунин, конструксияи using одатан истифода мешавад, ки автоматӣ Dispose()-ро даъват мекунад:

using(var resource = new ResourceHolder())
{
    // кор бо захира
}
// Ин ҷо автоматӣ Dispose()-ро даъват мекунад

Инчунин, IDisposable кӯмак мекунад, ки захираҳоро дуруст идора кунед ва аз шикастаниҳо пешгирӣ кунед.