Wie entsorgt man eine IDisposable in Managed C ++
-
20-08-2019 - |
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?
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