我正在尝试在托管 C++(.NET 2.0)中处理 IDisposable 对象(FileStream^ fs)并收到错误消息
Dispose' : 不是 'System::IO::FileStream 的成员
它说我应该调用析构函数。会打电话
fs->~FileStream();
调用 FileStream 对象的 dispose 方法?为什么我不能调用 Dispose?
我正在尝试在托管 C++(.NET 2.0)中处理 IDisposable 对象(FileStream^ fs)并收到错误消息
Dispose' : 不是 'System::IO::FileStream 的成员
它说我应该调用析构函数。会打电话
fs->~FileStream();
调用 FileStream 对象的 dispose 方法?为什么我不能调用 Dispose?
正确的模式是只删除对象:
delete fs;
这将被转换为对 Dispose() 的调用。
有关幕后发生的事情的一些细节,请参阅这篇文章。这个成语的好处是它允许你写:
{
FileStream fs(...)
...
}
并正确调用 Dispose 方法......相当于 C# 中的 using 块。文件流对象仍分配在托管堆上。