0Pricing
C# Academy · Lektion

IDisposable, using-Anweisung

Implementieren Sie IDisposable, verwenden Sie die using-Anweisung für eine deterministische Bereinigung und vergleichen Sie sie mit einem manuellen try/finally. Nur für C# 6.

IDisposable, using-Anweisung ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Warum IDisposable + using

Ziel: Geben Sie Ressourcen deterministisch frei.

  • Implementieren Sie IDisposable.
  • Verwenden Sie die using-Anweisung (C# 6).
  • Vergleichen Sie sie mit try/finally.
  • Halten Sie die Bereinigung klein und sicher.

IDisposable implementieren

Implementieren Sie IDisposable.Dispose, um Ressourcen wie Dateien, Sockets und Handles freizugeben. Die Methode sollte idempotent sein.

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

try/finally-Muster

try/finally garantiert die Bereinigung, ist aber ausführlich und wird leicht vergessen. Die using-Anweisung ist eine Kurzform.

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

Demo zur using-Anweisung

Die using-Anweisung kapselt implizit try/finally; Dispose wird aufgerufen, wenn der Block endet.

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");
    }
  }
}

I/O mit using

Die meisten I/O-Typen implementieren IDisposable. Verwenden Sie using, damit Handles umgehend geschlossen werden.

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

Tipps und Fallstricke bei using

Tipps:

  • Bevorzugen Sie using gegenüber manuellen Dispose-Aufrufen.
  • Halten Sie Dispose kurz und sicher (wenn möglich ohne Ausnahmen).
  • Verwenden Sie Objekte nicht mehr, nachdem sie freigegeben wurden.
  • Verschachteln Sie bei mehreren Ressourcen die using-Blöcke, um die Reihenfolge zu steuern.

Garantie der using-Anweisung

Schnelltest: Was garantiert die using-Anweisung für ein IDisposable-Objekt?

Zusammenfassung

Zusammenfassung: Implementieren Sie IDisposable für Ressourcen und kapseln Sie deren Verwendung in einem using-Block, um in C# 6 die Bereinigung über ein implizites try/finally sicherzustellen.

Häufig gestellte Fragen

Ist die Lektion „IDisposable, using-Anweisung“ kostenlos?

Ja — der vollständige Text von „IDisposable, using-Anweisung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „IDisposable, using-Anweisung“?

Implementieren Sie IDisposable, verwenden Sie die using-Anweisung für eine deterministische Bereinigung und vergleichen Sie sie mit einem manuellen try/finally. Nur für C# 6. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.

Wie lange dauert die Lektion „IDisposable, using-Anweisung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. try/catch/finally, throw new und erneutes Auslösen
  2. Eigene Ausnahmen und Fehlerdesign
  3. IDisposable, using-Anweisung
← Zurück zu C# Academy