Лично я бы предпочел не использовать IDisposable
реализации в using
инструкциях.
Так что, если у вас был такой код:
var fs = new FileStream(...);
// Other code.
fs.Dispose();
Было бы сказано использовать его в выражении using
.
Выгода будет состоять в том, что он будет предупреждать вас о случаях, когда вы, возможно, не знаете, где объекты, которые должны быть утилизированы, не утилизируются своевременно.
Однако, бывает достаточно, чтобы это была допустимая ситуация, чтобы НЕ объявлять IDisposable
реализации в операторе using для правила, подобного этому, чтобы очень быстро стать болью. Чаще всего в этом случае берется реализация IDisposable
в качестве параметра метода.
То, что я делаю не , означает использование классов, в которых детали реализации устраняют необходимость вызова Dispose
, (например, MemoryStream
или DataContext
); они реализуют IDisposable
и должны всегда вызывать Dispose
независимо от деталей реализации , так как всегда лучше кодировать против выставленного контракта.