2010-10-20 112 views

回答

19

不,這是沒有機會的。這是安全的 - MemoryStream保持對字節數組的強有力的參考。

我去看看我能找到的關於擔保的任何文件...

編輯:排序... ...

MemoryStream.Close

的緩衝區是上仍然可用一旦流已關閉,則返回MemoryStream

誠然並不能保證它Dispose,但是這證明調用Stream.Close

MemoryStream.Dispose(bool)可能然後被覆蓋釋放數組,但它並沒有在我的經驗,這是一個突破性的變化在這一點上。

+0

我沒有在文檔中找到任何內容,但我們在Mono中爲此進行了測試,代碼在這種情況下適用。順便說一句,不需要調用ms.Close()。 – Gonzalo 2010-10-20 18:58:13

+0

只需注意:MemoryStream.Close的.NET 4.0文檔(http://msdn.microsoft.com/en-us/library/system.io.stream.close%28v=vs.100%29.aspx)*不包含「一旦流被關閉,緩衝區仍然可用於MemoryStream」。聲明。讓我想知道他們是否確實改變了行爲。 – 2013-04-19 01:05:19

+0

@scottmarlowe:這是Stream.Close的文檔。看起來他們剛剛停止爲MemoryStream.Close提供「覆蓋文檔」。改變實際行爲會破壞很多代碼。 – 2013-04-19 05:55:28