Я разговаривал с человеком об использовании инструкции().
Он сказал, что если мы НЕ будем использовать оператор using() для чего-то вроде StreamWriter, если произойдет какое-либо исключение, ресурс НИКОГДА не будет собран.
Я понимаю, что нужно использовать оператор using(), но я не согласен с тем, что ресурс никогда не будет собран. Я думаю, что оператор using() вызовет метод dispose() в конце, что может значительно ускорить сбор. Однако, даже если мы не используем using(), мы не вызываем dispose(), ресурс все равно может быть собран путем сбора мусора, хотя это может занять гораздо больше времени.
С кем ты согласен?
пс. Я знаю, что вы все говорите. Важно использовать оператор using(). Я просто хочу узнать, точно ли ресурс никогда не будет собран, если мы этого не сделаем?
Dispose()
не вызывался из деструктора С#, и неуправляемые ресурсы не освобождались. С другой стороны, вы правы: MS предлагает шаблон, в котором вы всегда вызываетеDispose(bool)
из 2 мест: изDispose()
и из деструктора. Предполагая, что StreamWriter следует этому шаблону, сборщик мусора инициирует освобождение неуправляемых ресурсов. - person DK.   schedule 27.05.2011