0Pricing
C# Academy · Leçon

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

Vérification rapide : que garantit l’instruction using pour un objet IDisposable ?

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

  1. try/catch/finally, throw new et relance
  2. Exceptions personnalisées et conception des erreurs
  3. IDisposable et instruction using
← Retour à C# Academy