1. 程式人生 > >C# using語句使用流還需要顯示呼叫Close方法嗎?

C# using語句使用流還需要顯示呼叫Close方法嗎?

查閱了.NET原始碼中的Stream類

發現其對於IDisposable介面的實現如下

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();
        }
注意,此方法是繼承自IDisposable介面,且此處該方法並沒有寫成virtual方法
因此,我們可以得出以下結論:繼承自Stream的流呼叫Dispose和Close方法是等價的,所以在使用using語句來釋放流的時候,不需要再顯示的呼叫Close方法。