IDisposable et instruction using
Implémentez IDisposable, utilisez l’instruction using pour libérer les ressources de manière déterministe et comparez cette approche à un try/finally manuel. C# 6 uniquement.
IDisposable et instruction using est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.
Pourquoi IDisposable et using
Objectif : libérer les ressources de manière déterministe.
- Implémentez IDisposable
- Utilisez l’instruction using (C# 6)
- Comparez avec try/finally
- Gardez le nettoyage limité et sûr
Implémenter IDisposable
Implémentez IDisposable.Dispose pour libérer les ressources (fichiers, sockets, descripteurs). Rendez cette opération 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
}
}
Modèle try/finally
try/finally garantit le nettoyage, mais est verbeux et facile à oublier. L’instruction using est une version abrégée.
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
}
}
Démonstration de l’instruction using
L’instruction using encapsule un try/finally implicite ; Dispose est appelé à la fin du bloc.
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 avec using
La plupart des types d’E/S implémentent IDisposable. Utilisez using afin que les descripteurs soient fermés rapidement.
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
}
}
Conseils et pièges liés à using
Conseils :
- Préférez using aux appels manuels à Dispose.
- Gardez Dispose limité et sûr (sans levée d’exception si possible).
- N’utilisez pas les objets après leur libération.
- Pour plusieurs ressources, imbriquez les blocs using afin de contrôler l’ordre.
Garantie de l’instruction using
Récapitulatif
Récapitulatif : implémentez IDisposable pour les ressources et encapsulez leur utilisation dans un bloc using afin de garantir le nettoyage via un try/finally implicite dans C# 6.
Questions Fréquemment Posées
La leçon « IDisposable et instruction using » est-elle gratuite ?
Oui — le texte complet de « IDisposable et instruction using » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « IDisposable et instruction using » ?
Implémentez IDisposable, utilisez l’instruction using pour libérer les ressources de manière déterministe et comparez cette approche à un try/finally manuel. C# 6 uniquement. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.
Combien de temps prend la leçon « IDisposable et instruction using » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- try/catch/finally, throw new et relance
- Exceptions personnalisées et conception des erreurs
- IDisposable et instruction using