using
заявление может повредить производительности в том смысле, что это займет больше времени, но это не должно быть вашей проблемой в подобных случаях. Если тип реализует IDisposable
, это действительно должно быть завернуто в оператор using
, чтобы он мог очистить после себя.
Этот код очистки займет больше времени, чем без кода очистки, поэтому я говорю, что инструкция using
займет больше времени. Но это не значит, что вы не должны иметь заявление using
. Я думаю, что вы должны использовать инструкцию using
, даже если это может занять больше времени.
Я предполагаю, что я пытаюсь сказать, что вы сравниваете яблоки с апельсинами здесь, поскольку сравнение производительности имеет смысл только тогда, когда сравниваемый код создает идентичный результат и идентичные побочные эффекты. Ваши примеры не так, что я, почему я не думаю, что это проблема производительности.
Наилучшей практикой в этой ситуации является использование оператора using
для типов, реализующих IDisposable
, независимо от того, что оператор using
заставит метод работать дольше. Если вам нужно знать , как будет работать дольше, тогда вы должны использовать профилировщик, чтобы определить, создает ли этот код узкое место.
OK, что вид имеет смысл. Код, который я опубликовал, связан с интерфейсом, который я создаю, но не реализует метод dispose. Полагаю, я мог бы добавить его и назвать его в основном разделе, но из того, что вы говорите, было бы лучше в конце концов обернуть каждый сегмент в свой собственный оператор Using, чтобы позаботиться об утилизации, правильно? – Anders
Полагаю, мой вопрос был плохо сформирован. Возможно, лучшие практики: Какова наилучшая практика для запросов LINQ на C#? – Anders
Не добавляйте * реализацию 'IDisposable', если она еще не существует и не нужна. Если вам не нужно избавляться от каких-либо неуправляемых ресурсов, тогда вам не нужен интерфейс! :) Для получения дополнительной информации ознакомьтесь с http://msdn.microsoft.com/en-us/library/system.idisposable.aspx. –