Olá! Saturday, 20 de April de 2024.



Dicas CódigoFonte.net
Friday, 28 de November de 2008

Declaração using no c#

Olá pessoal,

Para quem está iniciando, já deve ter percebido o uso da palavra reservada "using" seguido de um namespace e que fica localizado no topo de nossas classes.

Este tipo de declaração é utilizada para fazer referência a um namespace que pode estar presente numa dll de forma a acessar facilmente classes que estão dentro deste namespace. Parece complicado? Mas não é.

Imaginemos que temos um namespace chamado CodigoFonte.NovoPortal.RN e dentro dele temos classes que fazem manipulação no banco de dados, como por exemplo, a classe Usuarios. Então, se não definirmos o "using" deste namespace no cabeçalho de nossa classe, teremos que digitar o caminho completo para a classe, caso desejássemos usá-la.

Então, teríamos:

// sem o "using" CodigoFonte.NovoPortal.RN.Usuarios usu = new CodigoFonte.NovoPortal.RN.Usuarios();

E agora com o using declarado no topo da classe

// com o "using" Usuarios usu = new Usuarios();

 
Veja que conseguimos diminuir drasticamente a forma como declaramos nossos objetos.

Este recurso também existe em outras linguagens e seguem a mesma teoria, como o Java - lá o termo é "package" para agrupar as classes e para fazer referência utilizamos a palavra reservada "import".

Porém, o using também pode ser utilizado em outra forma de implementação. Neste caso, muda um pouco de foco e passa a se chamar de "Using Statement", além disto, passa a trabalhar como se fosse um "try/finaly" - no que diz respeito a liberação de recursos. Vamos ao código que vai ser mais simples de entender:

- Neste primeiro exemplo, utilizo a codificação normal e como geralmente fazemos. A idéia é abrir um arquivo e escrever algo nele.

TextWriter tw = new StreamWriter("arquivo.txt"); tw.WriteLine("Olá mundo"); tw.Dispose();


Veja que eu utilizei explicitamente o Dispose(), que irá liberar este arquivo da memória e permitir que seja utilizado por outros processos.

- Agora com o finaly

TextWriter tw = new StreamWriter("arquivo.txt"); try {     tw.WriteLine("Olá mundo"); } finaly {     if(tw != null)         tw.Dispose(); }


Bem maior que o anterior, não acham?

- E finalmente com o uso do do nosso bloco "using"

using(TextWriter tw = new StreamWriter("arquivo.txt")) {     tw.WriteLine("Olá mundo"); }



Veja que depois que o código for executado e sair do bloco, será automaticamente limpo e liberado. Por debaixo dos panos, o framework converte este bloco using em um try/finaly. Mas vamos deixar este trabalho para o framework, não? ehehehe

Atualização: Só mais uma coisinha, este tipo de implementação de using com bloco só funciona com classes que implementam a interface IDisposable. :-)

Bom pessoal, espero que tenham gostado da dica.

Até a próxima.


Comentários do artigo [Novo comentário]

Emerson Viana Silva - 19 de January de 2010 - 13:17
Muito Útil
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010