O que é o bloco C# usando e por que devo usá-lo? [duplicado]

[[2] esta pergunta já tem uma resposta aqui:

Qual é o propósito do bloco de uso em C#? Como é diferente de uma variável local?

Author: one noa, 2008-10-17

9 answers

Se o tipo implementa Idisposível, ele automaticamente o elimina.

Indicado:

public class SomeDisposableType : IDisposable
{
   ...implmentation details...
}

Estes são equivalentes:

SomeDisposableType t = new SomeDisposableType();
try {
    OperateOnType(t);
}
finally {
   t.Dispose();
}

using (SomeDisposableType u = new SomeDisposableType()) {
    OperateOnType(u);
}
O segundo é mais fácil de ler e manter.
 245
Author: plinth, 2013-08-22 09:50:41

Using chamadas Dispose() Depois do using-bloco é deixado, mesmo que o código lance uma exceção.

Normalmente usa using para aulas que requerem limpeza depois delas, como IO.

Então, isto usando o bloco:
using (MyClass mine = new MyClass())
{
  mine.Action();
}

Faria o mesmo que:

MyClass mine = new MyClass();
try
{
  mine.Action();
}
finally
{
  if (mine != null)
    mine.Dispose();
}

Usar using é muito mais curto e mais fácil de ler.

 88
Author: Sam, 2013-08-13 21:33:00

De MSDN:

C#, através do quadro comum. net tempo de execução da linguagem (CLR), automaticamente liberta a memória usada para guardar objetos que já não são necessários. A libertação da memória é não-determinística; a memória é libertada sempre que a CLR decidir executar recolha. No entanto, é normalmente melhor para lançar limitado recursos como o arquivo lida e ligações de rede tão rapidamente quanto possivel.

A indicação de Utilização permite o programador a indicar quando os objectos que os recursos devem libertar o. O objecto fornecido à utilização declaração Interface idisposível. Interface fornece o método de eliminação, que deve libertar os recursos do objecto.

Por outras palavras, a instrução using diz à.NET para libertar o objecto especificado no bloco {[[0]}, uma vez que já não seja necessário.

 38
Author: Robert S., 2008-10-17 13:53:41

A declaração de utilização é usada para trabalhar com um objecto em C# que implementa a interface IDisposable.

A interface IDisposable tem um método público chamado Dispose que é usado para eliminar o objecto. Quando usamos a declaração de uso, não precisamos descartar explicitamente o objeto no código, a declaração de uso cuida dele.

using (SqlConnection conn = new SqlConnection())
{

}

Quando usamos o bloco acima, internamente o código é gerado assim:

SqlConnection conn = new SqlConnection() 
try
{

}
finally
{
    // calls the dispose method of the conn object
}

Para mais detalhes, deve ler-se: Understanding a declaração de 'usar'em C # .

 19
Author: Sunquick, 2014-09-08 20:09:22

Colocar o código num bloco de uso garante que os objectos são eliminados (embora não necessariamente recolhidos) assim que o controlo sai do bloco.

 5
Author: TheSmurf, 2008-10-17 13:51:03

Tome também nota que o objecto instanciado via using só é lido dentro do bloco de Utilização. Consulte a referência oficial C# aqui .

 5
Author: Sir Juice, 2014-05-28 12:46:57
using (B a = new B())
{
   DoSomethingWith(a);
}

É equivalente a

B a = new B();
try
{
  DoSomethingWith(a);
}
finally
{
   ((IDisposable)a).Dispose();
}
 4
Author: Bert Huijben, 2017-07-29 14:33:14
Na verdade, é apenas um açúcar sintático que não requer que você faça uma chamada explícita para eliminar os membros que implementam o Idisposível.
 2
Author: SaaS Developer, 2008-10-17 13:53:44

A declaração de Utilização obtém um ou mais recursos, executa uma declaração e, em seguida, dispõe do recurso.

 2
Author: Meera Tolia, 2009-10-05 06:45:47