Я спросил question об этом методе:
// 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.
Итак, я могу сказать, что это будет казаться слишком хромым для кого-то, кто кодировал С# в течение года или двух, но почему я должен распоряжаться им?
Видно, что testWriter
имеет метод dispose, но не должен ли сбор мусора заботиться об этом? Я приехал из Delphi в С#. В Delphi мне пришлось все очистить, так что это не случай, когда я хочу быть ленивым. Мне просто сказали, что если вы вынудите освободить память, которую ваши объекты возьмут, это может привести к плохим вещам. Мне сказали: "Просто позвольте сборщику мусора сделать это".
- Итак, почему мне нужно вызывать dispose? (Я предполагаю, что это потому, что
textWriter
попадает на диск.) - Есть ли список объектов, с которыми мне нужно быть осторожными? (Или простой способ узнать, когда мне нужно позвонить?)