如何在Managed C ++中处理IDisposable

时间:2008-12-08 16:21:24

标签: .net idisposable managed-c++

我正在尝试在托管C ++(.Net 2.0)中处理IDisposable对象(FileStream ^ fs)并收到错误

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

它说我应该调用析构函数。会打电话

fs->~FileStream();

在FileStream对象上调用dispose方法?为什么我不能调用Dispose?

1 个答案:

答案 0 :(得分:29)

正确的模式是删除对象:

delete fs;

这将转换为对Dispose()的调用

有关幕后内容的一些详细信息,请参阅此post。这个成语的优点是它允许你写:

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

并且正确调用Dispose方法...等同于C#中的using块。文件流对象仍在托管堆上分配。