2012-08-29 50 views
3

假設一個類定義:當使用語句退出範圍類成員和using語句

class TestClass 
{ 
    MemoryStream s = new MemorySteam(); 

    void DoStuff() 
    { 
     using (s = new MemoryStream()) 
     { 
      // Do stuff 
     } 
    } 
} 

發生s什麼?

編輯: 在不同的方法中使用s會出現問題嗎?

編輯2:會有一個未引用的對象留在MemoryStream的第一個實例化中嗎?

+0

除了各種「它的處置方法被調用」(這都是正確的)之外,還值得注意的是它有資格進行垃圾回收(因爲e在功能中未進一步參考)。 –

+0

@ChrisShain我不是100%沒有運行測試,但我不相信這是一個保證。你可以實現你的處置不當,並把事件連接起來。這會阻止它被GC'd –

+0

我剛剛更新了我的答案,以回答您的編輯FYI –

回答

2

Dispose方法以清理這個對象

我們所說的使用,以清理非託管對象調用了Objet公司,因爲它們不會被GC

GC不要清洗t有關於非管理對象的信息,所以開發人員必須清理

+0

Dispose不會破壞對象。 Dispose允許對象清理任何非託管資源。 –

+0

對不起,布賴恩我是法國人,所以我不知道英語語言的缺陷,謝謝你的評論,在將來我會說得很好 –