Aus irgendeinem Grund FXCop seems to think Ich sollte GC.SuppressFinalize in Dispose aufrufen, unabhängig davon, ob ich einen Finalizer habe oder nicht.Sollte GC.SuppressFinalize für Objekte aufgerufen werden, die keinen Finalizer haben?
Fehle ich etwas? Gibt es einen Grund, GC.SuppressFinalize für Objekte aufzurufen, für die kein Finalizer definiert ist?
Wahr. Außerdem sollten Sie einen Finalizer haben, der Dispose() aufruft. – configurator
TrueObject.Finalize ist ein Null-Op., Aber wenn Sie IDisposable implementieren, sagen Sie, dass Sie Ressourcen zum Freigeben haben. Von MSDN bedeutet das, dass Sie immer einen Finalizer haben sollten, um sie zu befreien, damit sie korrekt behandelt werden. Dies bedeutet, dass Sie den Finalize-Aufruf "Dispose" und "Dispose" die Finalisierung beenden müssen. –
@configurator Sie sollten nur einen Finalizer haben, wenn Sie direkt über nicht verwaltete Ressourcen verfügen (z. B. Handles). Wenn Sie sie nur indirekt besitzen, z.B. ein Verweis auf einen FileStream, warum sollten Sie mehr als IDisposable.Dispose() schreiben {if (fs! = null) {fs.Dispose(); fs = null; }}? IMO, StyleCop ist ein schreckliches Werkzeug, das eine Menge nutzlosen Text zu schreiben und zu pflegen zwingt, und fügt keinen Geschäftswert im Gegenzug. –