我有以下代碼:MemoryStream foo(){ MemoryStream ms = new MemoryStream(); // write stuff to ms return ms;}void bar(){ MemoryStream ms2 = foo(); // do stuff with ms2 return;}我分配的MemoryStream是否有可能以后不能被處理掉?我有一個同行評審堅持我手動關(guān)閉它,我找不到信息來判斷他是否有一個有效點。
3 回答

慕桂英3389331
TA貢獻(xiàn)2036條經(jīng)驗 獲得超8個贊
你不會泄漏任何東西 - 至少在當(dāng)前的實施中。
調(diào)用Dispose不會更快地清理MemoryStream使用的內(nèi)存。它會被可行的通話,這可能會或可能不會對你有用后讀/寫調(diào)用停止您的流。
如果你完全確定你永遠(yuǎn)不想從MemoryStream轉(zhuǎn)移到另一種流,那么不打算不調(diào)用Dispose會對你造成任何傷害。然而,這通常是一種很好的做法,部分原因是如果你做了改變以使用不同的Stream,你不希望被難以發(fā)現(xiàn)的bug所困擾,因為你很早就選擇了簡單的方法。(另一方面,有YAGNI的論點......)
無論如何,這樣做的另一個原因是新實現(xiàn)可能會引入將在Dispose上釋放的資源。
- 3 回答
- 0 關(guān)注
- 1902 瀏覽
添加回答
舉報
0/150
提交
取消