我在这个方法上提出了一个问题:
// Save an object out to the disk
public static void SerializeObject<T>(this T toSerialize, String filename)
{
XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
TextWriter textWriter = new StreamWriter(filename);
xmlSerializer.Serialize(textWriter, toSerialize);
textWriter.Close();
}
在我收到的响应中,我得到了以下的附加备注:
确保您始终处理可释放资源,例如流和文本读写器。这似乎不是您的SerializeObject方法的情况。
所以,对于已经编写C#一两年的人来说,我可以告诉你这似乎很无聊,但我为什么要处理它呢?
我看到testWriter
有一个dispose方法,但难道垃圾回收不会处理吗?我从Delphi转到了C#。在Delphi中,我必须清理所有内容,所以这不是因为我想偷懒。我只是被告知如果强制释放内存,可能会导致一些问题。我被告知“让垃圾回收器去处理它”。
- 那么,为什么我需要调用dispose方法呢?(我的猜测是因为
textWriter
会打印到磁盘上。) - 是否有一个需要小心处理的对象列表?(或者有一种简单的方法可以知道何时需要调用dispose方法?)
;)
... 我不知道它不会帮助GC。这似乎是一个小优化的好地方,但我不是框架的作者。 - jcolebrand