0Pricing
C# Academy · Aula

IDisposable, instrução using

Implemente IDisposable, use a instrução using para uma limpeza determinística e compare-a com try/finally manual. Somente C# 6.

IDisposable, instrução using é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 3 aulas no total.

Por que IDisposable + using

Objetivo: liberar recursos de forma determinística.

  • Implemente IDisposable
  • Use a instrução using (C# 6)
  • Compare com try/finally
  • Mantenha a limpeza pequena e segura

Implementação de IDisposable

Implemente IDisposable.Dispose para liberar recursos (arquivos, soquetes e identificadores). Garanta que a operação possa ser repetida com segurança.

using System;

// Simple disposable that tracks whether it was cleaned up
public sealed class FakeConnection : IDisposable
{
  public bool IsOpen { get; private set; }

  public FakeConnection()
  {
    IsOpen = true;
    Console.WriteLine("Open");
  }

  public void Dispose()
  {
    if (IsOpen)
    {
      IsOpen = false;
      Console.WriteLine("Close");
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    FakeConnection c = new FakeConnection();
    c.Dispose(); // manual cleanup
  }
}

Padrão try/finally

try/finally garante a limpeza, mas é prolixo e fácil de esquecer. A instrução using é uma forma abreviada.

using System;

public sealed class FakeConnection : IDisposable
{
  public void Dispose() { Console.WriteLine("Dispose called"); }
  public void Send(string msg) { Console.WriteLine("Send: " + msg); }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Manual try/finally
    FakeConnection a = null;
    try
    {
      a = new FakeConnection();
      a.Send("A");
      throw new Exception("boom");
    }
    finally
    {
      if (a != null) a.Dispose(); // runs even on exception
    }

    // unreachable due to thrown exception in this demo
  }
}

Demonstração da instrução using

A instrução using envolve um try/finally oculto; Dispose é chamado quando o bloco termina.

using System;

public sealed class FakeConnection : IDisposable
{
  public void Dispose() { Console.WriteLine("Dispose called"); }
  public void Work() { Console.WriteLine("Working"); }
}

public class Program
{
  public static void Main(string[] args)
  {
    try
    {
      using (FakeConnection c = new FakeConnection())
      {
        c.Work();
        throw new InvalidOperationException("oops");
      } // Dispose runs here automatically
    }
    catch (Exception)
    {
      Console.WriteLine("Handled");
    }
  }
}

E/S com using

A maioria dos tipos de E/S implementa IDisposable. Use using para que os identificadores sejam fechados imediatamente.

using System;
using System.IO;

public class Program
{
  public static void Main(string[] args)
  {
    // Create a small temp file then read it
    string path = "demo.txt";
    File.WriteAllText(path, "hello");

    using (StreamReader r = new StreamReader(path))
    {
      string text = r.ReadToEnd();
      Console.WriteLine(text);
    } // r.Dispose() closes the file handle
  }
}

Dicas e armadilhas do using

Dicas:

  • Prefira using a chamadas manuais de Dispose.
  • Mantenha Dispose pequeno e seguro (sem lançamentos de exceções, se possível).
  • Não use objetos depois que forem descartados.
  • Para vários recursos, aninhe blocos using para controlar a ordem.

Garantia da instrução using

Verificação rápida: o que a instrução using garante para um objeto IDisposable?

Recapitulação

Recapitulação: implemente IDisposable para recursos e envolva o uso em um bloco using para garantir a limpeza por meio de um try/finally oculto no C# 6.

Perguntas Frequentes

A aula “IDisposable, instrução using” é grátis?

Sim — o texto completo de “IDisposable, instrução using” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 3 aulas no total.

O que vou aprender em “IDisposable, instrução using”?

Implemente IDisposable, use a instrução using para uma limpeza determinística e compare-a com try/finally manual. Somente C# 6. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.

Quanto tempo leva a aula “IDisposable, instrução using”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. try/catch/finally, throw new versus relançamento
  2. Exceções personalizadas; projeto de erros
  3. IDisposable, instrução using
← Voltar para C# Academy