Лично я бы предпочел не использовать IDisposable
реализации в using
заявлениях.
Так что, если у вас такой код:
var fs = new FileStream(...);
// Other code.
fs.Dispose();
Было бы сказать вам, чтобы использовать его в using
заявлении.
Выгода будет заключаться в том, что она предупредит вас о случаях, когда вы не знаете, где объекты, которые должны быть удалены, не будут своевременно удалены.
Однако, есть достаточно времени, когда это допустимая ситуация, чтобы НЕ объявить IDisposable
реализаций в используемом утверждении для такого правила, чтобы это стало очень быстро. Чаще всего этот случай принимает реализацию IDisposable
как параметр метода.
Что я не имею в виду обыкновений классов, где детали реализации устранить необходимость вызова Dispose
, (например, MemoryStream
или DataContext
); те, которые осуществляют IDisposable
, и должны всегда иметь Dispose
, вызываемые на них, вне зависимости от . детали, так как всегда лучше указывать на выставленный контракт.
FXCop не выполняет проверку статического кода, он проверяет скомпилированную сборку (IL). Статический код analisys выполняется через StyleCop. –
@BeowulfOF, я бы сказал, что FXCop проверил статический код, он просто не проверяет количество пробелов, которые у вас есть на каждой стороне «=» и т. Д. StyleCop делает больше проверки стиля, например. id не отслеживает поток управления между методами и т. д. –
Microsoft заявляет, что только сборки анализируются FXCop, а не исходным кодом. http://msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx –