Heim >Backend-Entwicklung >C++ >Wann sollten Sie IDisposable in C# implementieren?
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(); } }
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(); } } }
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!