C#, a través de Common Language Runtime (CLR) de .NET Framework, libera automáticamente la memoria utilizada para almacenar objetos que ya no son necesarios. La liberación de memoria no es determinista; se libera cuando CLR decide realizar la recolección de elementos no utilizados. Sin embargo, normalmente es mejor liberar los recursos limitados, como identificadores de archivos y conexiones de red, tan rápido como sea posible.
La instrucción using permite al programador especificar cuándo los objetos que utilizan recursos deben liberarlos. El objeto proporcionado a la instrucción using debe implementar la interfaz IDisposable. Esta interfaz proporciona el método Dispose, que debería liberar los recursos del objeto.
Es posible salir de una instrucción using cuando se alcanza el final de la instrucción using o cuando se produce una excepción y el control abandona el bloque de la instrucción antes de llegar al final.
El objeto se puede declarar en la instrucción using, como se mostró anteriormente, a delante de ella, del modo siguiente:
Font font2 = new Font("Arial", 10.0f);
using (font2)
{
// use font2
} Se pueden utilizar varios objetos con una instrucción using, pero se deben declarar dentro de la instrucción using, como sigue:
using (Font font3 = new Font("Arial", 10.0f),
font4 = new Font("Arial", 10.0f))
{
// Use font3 and font4.
}