Entsorgung ein IDisposable-Objekt in ein öffentliches statisches Feld

Wenn eine Klasse hat eine Instanz-Feld, das IDisposable implementiert dann die enthaltende Klasse IDisposable implementiert und Klasse, dass Felder, die Dispose-Methode in Ihrer Dispose-Methode.

public class A : IDisposable 
{
    public System.Drawing.Font font = new Font("Arial", 10.0f);

    public void Dispose()
    {
        font.Dispose()
    }
}

(Ich weiß, ich habe nicht das dispose-Muster richtig, aber für den Beispiel-code sollte gut genug sein)

Wenn das Feld ein statisches Feld, obwohl, wo sollte der Aufruf auf das Feld Entsorgen werden?

public class B
{
    public static System.Drawing.Font font = new Font("Arial", 10.0f);
}

Konnte ich machen, Klasse B implementieren Sie IDisposable und haben, dass call font.Dispose aber wenn B. schriftart verwendet wird, später erneut auf, das würde zu Problemen führen. So gut wie Sie hätte sich zu erinnern, dass dispise den Zugriff auf eine statische Methode, die Sie brauchen zu erstellen eine Instanz nur zu nennen Entsorgen.

Konnte ich auch eine statische Methode Dispose dann aber die Nutzer haben sich daran zu erinnern zu nennen, Veräußern und sicherzustellen, dass Sie der Letzte Nutzer es in dem Programm.

  • Es gibt keine solche Sache wie ein "statisches Objekt", also ist die Frage sinnlos.
  • Ihre Frage ist allgemein. versuchen Sie, bestimmte er.
  • Woops, tippte es. Danke für den catch
  • In einigen Fällen müssen Sie überschreiben.
  • Es ist nicht klar, was Sie nun Fragen. Haben Sie versucht, das offensichtliche Ansatz A.font.Dispose()? Wenn nicht, warum nicht?
  • Gehen für eine komplette Neuentwicklung der Frage, denke ich. Bei Gehirn-Fragen schneller als ich denken kann, wie zu Fragen,
  • Dies scheint nicht wie eine gute Idee, von Anfang an. Was passiert, wenn Sie sich entscheiden, verwenden Sie die Referenz nach, die Sie angerufen haben Dispose (aber vergessen zu initialisieren)? Ich hoffe, Sie sind nicht reichte dieser code heraus für andere zu verwenden.
  • Das ist so etwas wie der Stamm der Frage, denke ich.

InformationsquelleAutor shmuelie | 2012-12-25
Schreibe einen Kommentar