When should I use the using Statement?

.net, c#, using-statement

Solution

If a class implements `IDisposable` then it will create some unmanaged resources which need to be 'disposed' of when you are finished using them. So you would do something like:

SqlConnection awesomeConn = new SqlConnection(connection);

// Do some stuff

awesomeConn.Dispose();

To avoid forgetting to dispose of the resourses (in this case close the database connection), especially when an exception is thrown, you can use the `using` syntax to automatically call dispose when you go out of the using statement's scope:

using (SqlConnection awesomeConn = new SqlConnection(connection))
{
     // Do some stuff
} // automatically does the .Dispose call as if it was in a finally block

In fact, the using block is equivalent to:

try
{
    SqlConnection awesomeConn = new SqlConnection(connection);

    // do some stuff
}
finally 
{
    awesomeConn.Dispose();
}

Problem

Possible Duplicate: What is the C# Using block and why should I use it? I'm converting an old site to C# and I'm not sure when I should be using 'using'. Are there any general guidelines? I know of the benefits, but I'm not 100% sure how to use it. Is it every time I 'new' a method/property? ``` SqlConnection awesomeConn = new SqlConnection(connection); ```

Original source

Related problems