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 кӯмак мекунад, ки захираҳоро дуруст идора кунед ва аз шикастаниҳо пешгирӣ кунед.