Persönlich würde ich lieber nicht IDisposable
Implementierungen in using
Aussagen verwenden.
Also, wenn Sie Code wie folgt hatte:
var fs = new FileStream(...);
// Other code.
fs.Dispose();
Es würde Ihnen sagen, es in einer using
Anweisung zu verwenden.
Der Vorteil wäre, dass Sie auf Fälle aufmerksam gemacht werden, in denen Sie möglicherweise nicht wissen, wo Objekte, die entsorgt werden sollten, nicht rechtzeitig entsorgt werden.
Es gibt jedoch genug Zeiten, in denen es eine gültige Situation ist, IDisposable
Implementierungen in einer using-Anweisung für eine Regel wie diese nicht zu deklarieren, um sehr schnell ein Schmerz zu werden. In den meisten Fällen wird in diesem Fall eine IDisposable
Implementierung als Parameter für eine Methode verwendet.
Was ich tun nicht bedeuten Verwendungen von Klassen ist, wo die Details der Implementierung die Notwendigkeit entfernen Dispose
für den Aufruf (z MemoryStream
oder DataContext
); diese implementieren IDisposable
und sollten immer Dispose
aufgerufen haben, unabhängig von der Implementierung Details, wie es immer besser ist, gegen den Vertrag ausgesetzt Code.
FXCop führt keine statische Codeüberprüfung durch, es überprüft die kompilierte Assembly (IL). Statische Code-Analyse wird über StyleCop durchgeführt. –
@BeowulfOF, ich würde sagen, dass FXCop statische Codeüberprüfung gemacht hat, es überprüft einfach nicht die Anzahl der Leerzeichen, die Sie auf jeder Seite eines "=" usw. haben. StyleCop prüft mehr Stil, z. ID verfolgt keinen Kontrollfluss zwischen Methoden usw. –
Microsoft gibt an, dass nur Baugruppen von FXCop analysiert werden, nicht der Quellcode. http://msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx –