Как вы избавляетесь от IDisposable в управляемом C ++
-
20-08-2019 - |
Вопрос
Я пытаюсь избавиться от объекта IDisposable (FileStream ^ fs) в управляемом C ++ (.Net 2.0) и получаю сообщение об ошибке
'Dispose' : is not a member of 'System::IO::FileStream'
В нем говорится, что вместо этого я должен вызвать деструктор.Уилл зовет
fs->~FileStream();
вызвать метод dispose для объекта FileStream?Почему я не могу позвонить Dispose?
Решение
Правильный шаблон - просто удалить объект:
delete fs;
Это будет переведено в вызов Dispose()
Видишь это Публикация для получения некоторых подробностей о том, что происходит под капотом.Преимущество этой идиомы в том, что она позволяет вам писать:
{
FileStream fs(...)
...
}
И правильно вызовите метод Dispose ...эквивалентно блоку using в C #.Объект file stream по-прежнему выделяется в управляемой куче.
Не связан с StackOverflow