Usando la sentencia «using» dentro de un bloque de codigo

A lo mejor esto puede ser muy comun para los que ya llevan rato programando en C#, y el uso de esta sentencia ya sea bastante familiar; pero en mi caso siempre me causo mucho interes y algo de dificultad para encontrar su uso dentro de una sentencia.

Al estar leyendo un libro muy bueno del Dr. Ian Marteens, "La Cara Oculta de C# donde explica el uso y la equivalencia de la sentencia.

Cuando tenemos un caso como el siguiente:

<Clase que contenga metodo Dispose()> NombreInstancia = new <Clase>

try{

//realizar acciones

}

finally{

NombreInstancia.Dispose();

}

Podremos sustituirla por la siguiente instruccion:

using(<Clase que contenga metodo Dispose()> NombreInstancia = new <Clase>){

//realizar acciones

}

La unica restriccion de esta sentencia es que la clase instanciada implemente la interfaz IDisposable. En mi opinion es una alternativa muy valida para reducir un par de lineas, considerando que el ciclo de vida de la instancia sera muy corto y conociendo de antemano lo que implica.