Visual C++ .NET/Class/IDisposable
implements IDisposable
<source lang="csharp">
- include "stdafx.h"
- include <msclr\auto_handle.h>
using namespace System; using namespace msclr; ref class MyObject : public IDisposable { private:
String^ Name;
public:
MyObject(String^ name) : Name(name) { Console::WriteLine("Constructor - {0}", Name); } ~MyObject() { Console::WriteLine("Destructor - {0}", Name); Name = nullptr; }
protected:
!MyObject() { Console::WriteLine("Finalize - {0}", Name); Name = nullptr; }
};
int main(array<System::String ^> ^args) {
{ MyObject^ NonAuto = gcnew MyObject("Non Auto no finally"); } MyObject^ NonAutoWFinally; try { NonAutoWFinally = gcnew MyObject("Non Auto with finally"); } finally { delete NonAutoWFinally; } { auto_handle<MyObject> Auto = gcnew MyObject("Auto"); } return 0;
}
</source>