使用 Stream、StreamReader 和 StreamWriter 等流物件時,考慮適當的物件處置方法非常重要。 Close() 和 Dispose() 方法都可用,但其用法的語意和約定有所不同。
Close() 方法
Close() 方法會刷新流中的所有緩衝資料並釋放它所使用的所有系統資源。這是一個常見操作,透過強制立即回寫來幫助確保資料完整性。
Dispose() 方法
Dispose() 方法遵循 IDisposable 接口,並且是用於託管資源清理。它呼叫受保護的 Dispose(bool dispose) 方法,該方法在內部呼叫 Close() 並執行其他清理任務,例如釋放託管資源。
根據檢查的程式碼使用 Reflector.NET,StreamReader 和 StreamWriter 中的 Close() 方法在內部呼叫 Dispose(true)。因此,呼叫任一方法都會觸發刷新和清理操作。
基於對 Close() 和 Dispose()的理解,建議的最佳實踐是使用這兩種方法:如下:
using (var stream = ...) { // Perform operations on the stream stream.Close(); }
這種方法結合了兩者的優點方法:
問題中所引用的 MSDN 範例使用 Close() 而不使用 using(),這是一種有效但過時的方法。上述建議的做法可以提高程式碼的可讀性和安全性。
以上是Close() 或 Dispose():C# 中流物件處置的最佳實務是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!