C# using語句使用流還需要顯示呼叫Close方法嗎?
阿新 • • 發佈:2018-12-29
查閱了.NET原始碼中的Stream類
因此,我們可以得出以下結論:繼承自Stream的流呼叫Dispose和Close方法是等價的,所以在使用using語句來釋放流的時候,不需要再顯示的呼叫Close方法。
發現其對於IDisposable介面的實現如下
注意,此方法是繼承自IDisposable介面,且此處該方法並沒有寫成virtual方法public void Dispose() { /* These are correct, but we'd have to fix PipeStream & NetworkStream very carefully. Contract.Ensures(CanRead == false); Contract.Ensures(CanWrite == false); Contract.Ensures(CanSeek == false); */ Close(); }
因此,我們可以得出以下結論:繼承自Stream的流呼叫Dispose和Close方法是等價的,所以在使用using語句來釋放流的時候,不需要再顯示的呼叫Close方法。