Reader Level:
ARTICLE

The "Using" Statement in C#

Posted by Dipal Choksi Articles | C# Language December 11, 2002
The .Net Framework provides resource management for managed objects through the garbage collector - You do not have to explicitly allocate and release memory for managed objects.
  • 0
  • 0
  • 49793

The .Net Framework provides resource management for managed objects through the garbage collector - You do not have to explicitly allocate and release memory for managed objects. Clean-up operations for any unmanaged resources should performed in the destructor in C#. To allow the programmer to explicitly perform these clean-up activities, objects can provide a Dispose method that can be invoked when the object is no longer needed. The using statement in C# defines a boundary for the object outside of which, the object is automatically destroyed. The using statement is exited when the end of the "using" statement block or the execution exits the "using" statement block indirectly, for example - an exception is thrown. The "using" statement allows you to specify multiple resources in a single statement. The object could also be created outside the "using" statement. The objects specified within the using block must implement the IDisposable interface. The framework invokes the Dispose method of objects specified within the "using" statement when the block is exited.

Note: The MyManagedClass class is not a part of the .Net Framework, and is only used in the example for demonstration. The MyManagedClass class requires to be released explicitly and implements the IDisposable interface.


Example 1

.......
using (MyManagedClass mnObj = new MyManagedClass())
{
......
mnObj.Use();
//use the mnObj object
......
}
//The compiler will dispose the mnObj object now
......

Example 2

......
MyManagedClass mnObj =
new MyManagedClass()
using (mnObj)
{
......
mnObj.Use();
//use the mnObj object
......
}
//The mnObj object will disposed now
......
 

Note that the using Directive in C# is different from the using statement. The "using" Directive is used to provide an alias for a namespace.

NOTE: This article is purely for demonstration. This article should not be construed as a best practices white paper. This article is entirely original, unless specified. Any resemblance to other material is an un-intentional coincidence and should not be misconstrued as malicious, slanderous, or any anything else hereof.

COMMENT USING

Trending up