Umgang mit .NET IDisposable-Objekten

Ich arbeite in C # und bin ziemlich nachlässig im Umgang mitusing Blöcke, um Objekte zu deklarieren, die implementierenIDisposable, was du anscheinend immer tun sollst. Ich sehe jedoch keine einfache Möglichkeit zu wissen, wann ich ausrutsche. Visual Studio scheint dies in keiner Weise anzuzeigen (vermisse ich nur etwas?). Soll ich nur jedes Mal, wenn ich etwas deklariere, die Hilfe überprüfen und nach und nach ein enzyklopädisches Gedächtnis aufbauen, für welche Objekte und welche nicht verfügbar sind? Scheint unnötig, schmerzhaft und fehleranfällig.

Wie machtSie geh damit um?

BEARBEITEN:

In der dazugehörigen Fragenleiste habe ich gefundeneine andere Frage das machte es klar, dassDispose() soll ohnehin vom Finalizer des Objekts aufgerufen werden. Selbst wenn Sie es niemals selbst nennen, sollte es irgendwann passieren, was bedeutet, dass Sie keinen Speicherleck haben, wenn Sie es nicht benutzenusing (Das ist es, worüber ich mir die ganze Zeit wirklich Sorgen gemacht habe). Die einzige Einschränkung besteht darin, dass der Garbage Collector nicht weiß, wie viel zusätzlicher Speicher vom Objekt als nicht verwaltetes Material gehalten wird, sodass er nicht genau weiß, wie viel Speicher durch das Sammeln des Objekts freigegeben wird. Dies führt zu einer weniger idealen Leistung als üblich durch den Müllsammler.

Kurz gesagt, es ist nicht das Ende der Welt, wenn ich eine verpasseusing. Ich wünschte nur, etwas würde zumindest eine Warnung dafür auslösen.

(Off-Topic: Warum gibt es keinen speziellen Markdown für das Verknüpfen mit einer anderen Frage?)

BEARBEITEN:

Ok, okay, hör auf zu schreien. Es ist super, du ArschlochDramatischer Streifenhörnchen-Niveauwichtig anrufenDispose() oder wir allesterben.

Jetzt. Warum ist es so einfach - verdammt, warum sogar?erlaubt - um es falsch zu machen? Sie müssen sich alle Mühe geben, um es richtig zu machen. Wenn man es wie alles andere macht, entsteht (anscheinend) Harmagedon. Soviel zur Verkapselung, was?

[Stielt angewidert ab]

Antworten auf die Frage(12)

Ihre Antwort auf die Frage