Я пытаюсь избавиться от объекта IDisposable (FileStream ^ fs) в управляемом C++ (.NET 2.0) и получаю сообщение об ошибке
Dispose' : is not a member of 'System::IO::FileStream
В нем говорится, что вместо этого я должен вызвать деструктор. Будет звонить
fs->~FileStream();
вызвать метод удаления объекта FileStream? Почему я не могу вызвать Dispose?





Правильный шаблон - просто удалить объект:
delete fs;
Это будет преобразовано в вызов Dispose ().
См. эта почта для некоторых деталей того, что происходит под капотом. Преимущество этой идиомы в том, что она позволяет писать:
{
FileStream fs(...)
...
}
И правильно вызывайте метод Dispose ... эквивалентный блоку using в C#. Объект файлового потока по-прежнему размещен в управляемой куче.
Еще лучше то, как это автоматически цепляется через члены, определенные семантикой стека стека.
Забыл об этом и снова использовал этот ответ. Хотел бы я принять / проголосовать дважды!
У меня тоже была эта проблема, спасибо, что спросили.