Thursday 15 February 2007

Using Using

Using should be used with anything that implements IDisposable. The using syntax can be used as a way of defining a scope for anything that implements IDisposable. The using statement also ensures that Dispose is called if an exception occurs.

//the compiler will create a local variable 
//which will go out of scope outside this context 
using (FileStream fs = new FileStream(file, FileMode.Open))
{
    //do stuff
}

Alternatively you could just use:
FileStream fs;
try
{
    fs = new FileStream();
    //do Stuff
}
finally
{
    if(fs!=null)
        fs.Dispose();
}

Extra reading from MSDN
C#, through the .NET Framework common language runtime (CLR), automatically releases the memory used to store objects that are no longer required. The release of memory is non-deterministic; memory is released whenever the CLR decides to perform garbage collection. However, it is usually best to release limited resources such as file handles and network connections as quickly as possible.
The using statement allows the programmer to specify when objects that use resources should release them. The object provided to the using statement must implement the IDisposable interface. This interface provides the Dispose method, which should release the object's resources.

No comments:

Post a Comment