0Pricing
C# Academy · Lección

IDisposable y la instrucción using

Implemente IDisposable, use la instrucción using para una limpieza determinista y compárela con try/finally manual. Solo C# 6.

IDisposable y la instrucción using es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.

Por qué usar IDisposable y using

Objetivo: Liberar recursos de forma determinista.

  • Implemente IDisposable
  • Use la instrucción using (C# 6)
  • Compárela con try/finally
  • Mantenga la limpieza breve y segura

Implementación de IDisposable

Implemente IDisposable.Dispose para liberar recursos (archivos, sockets y handles). Asegúrese de que sea idempotente.

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
  }
}

Patrón try/finally

try/finally garantiza la limpieza, pero es verboso y fácil de olvidar. La instrucción using es una 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
  }
}

Demostración de la instrucción using

La instrucción using envuelve un try/finally implícito; Dispose se llama cuando termina el bloque.

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 con using

La mayoría de los tipos de E/S implementan IDisposable. Use using para que los recursos se cierren rápidamente.

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
  }
}

Consejos y errores frecuentes con using

Consejos:

  • Prefiera using a las llamadas manuales a Dispose.
  • Mantenga Dispose breve y seguro (sin lanzar excepciones si es posible).
  • No use los objetos después de haberlos liberado.
  • Para varios recursos, anide bloques using para controlar el orden.

Garantía de la instrucción using

Comprobación rápida: ¿Qué garantiza la instrucción using para un objeto IDisposable?

Repaso

Repaso: Implemente IDisposable para los recursos y envuelva su uso en un bloque using para garantizar la limpieza mediante un try/finally implícito en C# 6.

Preguntas frecuentes

¿La lección «IDisposable y la instrucción using» es gratis?

Sí — el texto completo de «IDisposable y la instrucción using» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.

¿Qué aprenderé en «IDisposable y la instrucción using»?

Implemente IDisposable, use la instrucción using para una limpieza determinista y compárela con try/finally manual. Solo C# 6. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 3.

¿Cuánto tiempo toma la lección «IDisposable y la instrucción using»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. try/catch/finally, throw new frente a rethrow
  2. Excepciones personalizadas y diseño de errores
  3. IDisposable y la instrucción using
← Volver a C# Academy