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
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
- try/catch/finally, throw new frente a rethrow
- Excepciones personalizadas y diseño de errores
- IDisposable y la instrucción using