он начинает со мной прочтения stackoverflow answerЗачем мне нужно вызывать dispose на streamreader и stringwriter?
StringWriter
implments public abstract class TextWriter : MarshalByRefObject, IDisposable
на MSDN он говорит:
рамочная обеспечивает System.IDisposable интерфейс, который должен быть реализован предоставить разработчику руководство способ освободить неуправляемые ресурсы , как только они не понадобятся.
но что считается неуправляемым ресурсом? Я, очевидно, не думаю, что StringWriter
подходит. если я пишу мои собственные без наследования IDisposable .... Я не вижу никакой необходимости добавлять Dispose()
class ConfusedDevStringWriter{
private StringBuilder sb;
public ConfusedDevStringWriter(){ //ctor
sb = new StringBuilder();
}
}
И действительно я тестировал с отладчиком Visual Studio памяти: раз функция возвращает, StringWriter
и его StringBuilder
освобождены ... Moreoever, вызов Dispose, кажется, не делать ничего для StringWriter ...
Так не каждый класс, inhe rit from IDisposable
имеет полезное значение Dispose
. Опять же, это относится к моему вопросу , что считается неуправляемым ресурсом (примеры будут высоко оценены n_n). Я слышал, что файлы являются одним из них ... но не CLR VM? ... все ресурсы должны управляться им, не?
Вы задаете вопрос "*, что считается неуправляемым ресурсом *" уже есть ответы: http://stackoverflow.com/questions/3433197/what-exactly-are-unmanaged-resources – user3185569
Вопрос в заголовке ответил более или менее в http : //stackoverflow.com/questions/234059/is-a-memory-leak-created-if-a-memorystream-in-net-is-not-closed (тот же Q о MemoryStream). –
Я закрыл его как дубликат http://stackoverflow.com/questions/2475228, который между этим и http://stackoverflow.com/questions/3433197 отвечает на оба вопроса. –