... wenn ich IDisposable in einer lokalen Variablen verwende, aber nicht Dispose() oder das using() -Muster aufruft.Gibt es eine FxCop-Regel für lokal verwendete IDisposables?
public void BadMethod()
{
var fs = new FileStream("file.txt", FileMode.Create);
fs.WriteByte(0x55);
// no dispose, no using()
}
Genau wie die "Types that own disposable fields should be disposable" Regel für Felder.
EDIT: ersetzt Memory von Filestream, weil Memory ordnet nur Speicher und verwendet nicht (unmanaged) Ressourcen, so jemand über einen obligatorischen Dispose() -Aufruf besprechen könnte.
Warum würden Sie das wollen? Es ist sinnlos, die Erinnerung ist nicht wegwerfbar. Hoffentlich werden wir kein Werkzeug bekommen, das sagt, dass es ist, es wird den Geist des Programmierers irreparabel zerstören. –
@nobugz: Es ist immer noch richtig hier Dispose auf MemoryStream tatsächlich aufzurufen. Die Tatsache, dass MemoryStream keine nicht verwalteten Ressourcen verwendet, ist ein Detail der * Implementierung *. Der ** Vertrag ** für MemoryStream besagt, dass IDisposable implementiert wird und daher immer Dispose aufgerufen werden sollte. Es ist * immer * besser, gegen den Vertrag zu kodieren als gegen die spezifischen Implementierungsdetails. – casperOne
@capser: Ja, einige Programmierer mögen die Maschine, um ihnen zu sagen, was zu tun ist. Es ist eine Religion, die ich nicht abonniere, ich ziehe es vor, die Regel wissentlich zu brechen. Gehen Sie voran und tun Sie es auf Ihre Weise, Sie werden nie falsch bewiesen werden. Nur träge. –