正確的處置方式:實作 IDisposable
實作 IDisposable 可以實現非託管資源和一次性資源的確定性釋放。在您的程式碼片段中,User 類別不處理非託管資源或一次性引用,因此不需要處置。這可以透過將類別標記為密封來解決,從而有效地防止衍生類別重寫 IDisposable。
對於更詳細的範例,讓我們考慮一個名為 ResourceManager 的類,它管理非託管資源(例如文件句柄)和 IDisposable引用(例如,資料庫連接)。
將IDisposable 與非託管結合使用資源:
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(); } }
將IDisposable 與一次性引用一起使用:
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(); } } }
以上是何時應該在 C# 中實作 IDisposable?的詳細內容。更多資訊請關注PHP中文網其他相關文章!