Heim > Backend-Entwicklung > C++ > Wann sollten Sie IDisposable in C# implementieren?

Wann sollten Sie IDisposable in C# implementieren?

DDD
Freigeben: 2025-01-04 02:35:42
Original
862 Leute haben es durchsucht

When Should You Implement IDisposable in C#?

Die richtige Art und Weise entsorgen: IDisposable implementieren

Die Implementierung von IDisposable ermöglicht die deterministische Freigabe nicht verwalteter Ressourcen und Einwegressourcen. In Ihrem Codeausschnitt verarbeitet die User-Klasse keine nicht verwalteten Ressourcen oder verfügbaren Referenzen, sodass eine Entsorgung nicht erforderlich ist. Dies kann gelöst werden, indem die Klasse als versiegelt markiert wird und so effektiv verhindert wird, dass abgeleitete Klassen IDisposable überschreiben.

Für ein detaillierteres Beispiel betrachten wir eine Klasse namens ResourceManager, die sowohl nicht verwaltete Ressourcen (z. B. Dateihandles) als auch IDisposable verwaltet Referenzen (z. B. Datenbankverbindungen).

Verwendung von IDisposable mit Unmanaged Ressourcen:

public class ResourceManager : IDisposable
{
    private FileStream fileStream;

    public ResourceManager()
    {
        // Allocate and open the file handle
        fileStream = new FileStream("myfile.txt", FileMode.Open);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            // Free managed resources
            fileStream?.Close();
            fileStream?.Dispose();
        }
        // Free native resources
        fileStream.Dispose();
    }
}
Nach dem Login kopieren

Verwenden von IDisposable mit Einwegreferenzen:

public class ResourceManager : IDisposable
{
    private DisposableReference reference;

    public ResourceManager()
    {
        // Obtain the disposable reference
        reference = new DisposableReference();
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            // Free managed resources
            reference?.Dispose();
        }
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWann sollten Sie IDisposable in C# implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage