流物件的正確處置:Close() 與 Dispose()
在程式設計中,有效管理串流等資源至關重要。 Stream、StreamReader、StreamWriter等串流類別實作了IDisposable接口,提供了兩種釋放資源的方法:Close()和Dispose()。本文旨在闡明它們的角色和最佳實踐。
Close() 與Dispose()
Close() 方法明確關閉流,而Dispose () 方法呼叫Dispose(bool) 方法,該方法在內部處理資源釋放。 Close() 方法繼承自 Stream 類,並且對於每種派生流類型都有不同的實作。
它們如何運作
使用偵錯器或 Reflector.NET,我們可以深入研究這些方法的實作。兩個 Close() 方法最終都會呼叫 Dispose(true),這會釋放資源並防止進一步使用該物件。
最佳實踐
鑑於Close() 的等效性和Dispose(),選擇歸結為
使用( ... )區塊:
Close() 和Dispose() 組合:
範例
範例using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { using (StreamWriter writer = new StreamWriter(filename)) { // Stream processing... writer.Close(); // Explicit close } reader.Close(); // Explicit close } }
在提供的程式碼片段中,使用了using 區塊來確保正確釋放。不過,也會呼叫 Close() 方法,這並不是絕對必要的。
建議using (var stream = ...) { /* code */ stream.Close(); // Explicit close }
以上是Close() 與 Dispose():您應該對 C# 中的流物件使用哪一種方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!