Tag Archives: C++/CLI

Development Tips

C# using statement equivalent in C++/CLI for IDisposable objects

When dealing with disposable objects, C# offers elegant and simple syntax using the using statement which disposes managed resources and simplifies the code required to perform cleanup. In other words, the necessary try-finally block can be rewritten into one simple statement. However, when using disposable managed objects in the C++/CLI code, there is no equivalent for the using block. Programmer must write the entire try-finally block, introduce new local variable and needlessly complicate the code which would otherwise be relatively clean.

TL:DR

Either declare disposable objects on the stack or use the helper wrapper class at the end of this blog post. Example:

// on the stack, automatic destructor call
Managed m; 

// long syntax, unique_ptr like syntax
using_ptr<Managed^> m2(gcnew M());

// shorter syntax, same wrapper as the above
auto m3 = make_using_ptr(gcnew M());

read more »