我正在尝试在托管C ++(.Net 2.0)中处理IDisposable对象(FileStream ^ fs)并收到错误
'Dispose' : is not a member of 'System::IO::FileStream'
它说我应该调用析构函数。会打电话
fs->~FileStream();
在FileStream对象上调用dispose方法?为什么我不能调用Dispose?
答案 0 :(得分:29)
正确的模式是删除对象:
delete fs;
这将转换为对Dispose()的调用
有关幕后内容的一些详细信息,请参阅此post。这个成语的优点是它允许你写:
{
FileStream fs(...)
...
}
并且正确调用Dispose方法...等同于C#中的using块。文件流对象仍在托管堆上分配。