Frage

Ich versuche, ein IDisposable Objekt zu entsorgen (Filestream ^ fs) in Managed C ++ (.NET 2.0) und ich erhalte die Fehler

'Dispose' : is not a member of 'System::IO::FileStream'

Er sagt, dass ich die destructor stattdessen aufrufen sollte. Wird Aufruf

fs->~FileStream();

Die Dispose-Methode auf das Filestream-Objekt aufrufen? Warum kann ich nicht nennen entsorgen?

War es hilfreich?

Lösung

Das richtige Muster ist nur das Objekt löschen:

delete fs;

Dies wird in einen Aufruf übersetzt werden zu entsorgen ()

Sehen Sie diese Post für einige der Details, was ist geht unter der Haube. Der Vorteil dieses Idiom ist, dass es Sie schreiben können:

{
  FileStream fs(...)
  ...
}

Und die Dispose-Methode korrekt genannt ... äquivalent zu einem mit Block in C #. Das Datei-Stream-Objekt ist immer noch auf dem verwalteten Heap zugewiesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top