2008-12-08 98 views
16

我想處置的IDisposable的對象(的FileStream^FS)在託管C++(.NET 2.0),並正在錯誤如何在處理一個IDisposable接口的託管C++

'Dispose' : is not a member of 'System::IO::FileStream' 

它說我應該調用析構函數。請致電

fs->~FileStream(); 

調用FileStream對象的dispose方法?爲什麼我不能稱之爲Dispose?

+0

我也有這個問題,謝謝你的提問。 – demoncodemonkey 2009-06-04 13:01:26

回答

25

正確的模式是隻刪除對象:

delete fs; 

這將轉換成調用Dispose()

一些什麼是下事情的詳情,請參閱本post引擎蓋。這個習語的優點是它允許你寫:

{ 
    FileStream fs(...) 
    ... 
} 

並且有正確調用的Dispose方法...相當於C#中的使用塊。文件流對象仍然分配在託管堆上。

+0

更好的方式是自動鏈接通過堆棧樣式語義定義的成員。 – morechilli 2008-12-08 17:24:55