Junior — Middle
C# dasturlashda boshqarilmaydigan resurslardan foydalandingizmi?
sobes.tech AI
AIdan javob
Ha, C# da ishlashda boshqarilmaydigan resurslar bilan, masalan, fayl deskriptorlari, ma'lumotlar bazasi ulanishlari yoki xotira ko'rsatkichlari bilan, bu resurslarni to'g'ri bo'shatish muhimdir; bu xotira oqib ketishlari va boshqa muammolarni oldini oladi. Buning uchun odatda IDisposable interfeysini va Dispose() metodini amalga oshiradi, bu yerda boshqarilmaydigan resurslar bo'shatiladi.
Misol:
class UnmanagedResourceHolder : IDisposable
{
private IntPtr unmanagedPointer; // boshqarilmaydigan resurs
private bool disposed = false;
public UnmanagedResourceHolder()
{
// boshqarilmaydigan resursni ajratish
unmanagedPointer = /* API chaqiruvi */ IntPtr.Zero;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (unmanagedPointer != IntPtr.Zero)
{
// boshqarilmaydigan resursni bo'shatish
// masalan, native API chaqiruvi
unmanagedPointer = IntPtr.Zero;
}
disposed = true;
}
}
~UnmanagedResourceHolder()
{
Dispose(false);
}
}
Shu tarzda, boshqarilmaydigan resurslarni bo'shatish qo'lda nazorat qilinadi, bu esa oqib ketishlarni oldini oladi.