Junior — Middle
Kunt u het doel van de interface IDisposable uitleggen en hoe deze te gebruiken bij het beheer van bronnen?
sobes.tech AI
Antwoord van AI
De IDisposable-interface in C# is bedoeld voor het vrijmaken van niet-beheerde bronnen, zoals bestandsdescriptors, databaseverbindingen, sockets, enzovoort. Het bevat een methode Dispose() die wordt aangeroepen om de bronnen expliciet vrij te geven.
Het gebruik van IDisposable stelt je in staat om het moment van vrijgave van bronnen te controleren, wat belangrijk is om leaks te voorkomen.
Voorbeeld van gebruik:
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)
{
// Beheerde bronnen vrijmaken
}
// Onbeheerde bronnen vrijmaken
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
Ook wordt vaak de using-constructie gebruikt, die Dispose() automatisch aanroept:
using(var resource = new ResourceHolder())
{
// werken met de bron
}
// Hier wordt Dispose() automatisch aangeroepen
Op deze manier helpt IDisposable om bronnen correct te beheren en leaks te voorkomen.