Как вы избавляетесь от IDisposable в управляемом C ++

StackOverflow https://stackoverflow.com/questions/350052

  •  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 по-прежнему выделяется в управляемой куче.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top