Quick Tips: Comando using em C#

 

Nesta quick tip veremos como usar o comando using do C#.

 

O comando using faz com que o objeto seja automaticamente destruído após o encerramento do bloco.

 

Normalmente teríamos o seguinte código:

 

SqlConnection conexao = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;");

SqlCommand cmd = new SqlCommand("SELECT * FROM CLIENTE", conexao);

conexao.Open();

cmd.ExecuteNonQuery();

conexao.Close();

 

Com este código, nossos objetos seriam liberados pelo GC em algum momento, mas não sabemos quando. Para liberar estes objetos da memória imediatamente após o uso dos mesmos, podemos usar o comando using, dessa forma, nosso código ficaria assim:

 

using (SqlConnection conexao = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"))

{

    using (SqlCommand cmd = new SqlCommand("SELECT * FROM CLIENTE", conexao))

    {

        conexao.Open();

        cmd.ExecuteNonQuery();

        conexao.Close();

    }

}

 

Assim, logo após o encerramento do bloco using, o objeto que está nele é automaticamente liberado da memória, executando o método dispose do mesmo.

 

No final das contas o using funciona como se fosse um try... finally... sendo o funcionamento do mesmo semelhante ao código abaixo:

 

SqlConnection conexao = null;

SqlCommand cmd = null;


try

{

    conexao = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;");

    cmd = new SqlCommand("SELECT * FROM CLIENTE", conexao);

    conexao.Open();

    cmd.ExecuteNonQuery();

    conexao.Close();

}

finally

{

    if (null != cmd) ;

    cmd.Dispose();

    if (null != conexao)

        conexao.Dispose();

}

 

É isso aí pessoal, vou ficando por aqui.

Fiquem a vontade para criticar, tirar dúvidas e sugerir novos temas.
Abraço.

Ricardo Coelho