У меня есть статическая функция для сериализации документа Xml определенного типа ввода. Ниже приведены подходы:Инициализировать переменную несколько раз
Approach 1.
public static XmlDocument SerializeToXmlDocument<T>(this T o)
{
XmlDocument xmlDoc = new XmlDocument();
using (XmlWriter writer = xmlDoc.CreateNavigator().AppendChild())
{
XmlSerializer xmls = new XmlSerializer(typeof(T));
xmls.Serialize(writer, o);
}
return xmlDoc;
}
Approach 2.
static XmlSerializer xmls;
public static XmlDocument SerializeToXmlDocument<T>(this T o)
{
XmlDocument xmlDoc = new XmlDocument();
using (XmlWriter writer = xmlDoc.CreateNavigator().AppendChild())
{
if (xmls == null || xmls.GetType() != typeof(T))
{
xmls = new XmlSerializer(typeof(T));
}
xmls.Serialize(writer, o);
}
return xmlDoc;
}
Этот метод вызывается из различных страниц, так что тип может быть различным.
Какой я должен использовать, учитывая минимальное использование памяти. Также, как утверждает мой архитектор, XmlSerializer не собирается GC, он остается там. Приходится работать только с этим допущением.
Q.1) Какой подход лучше, и почему?
Q.2) А также, что произойдет, если я инициализирую одну переменную много раз. Конструктор каждый раз назначает память объекту. Но объект имеет ссылку, поэтому он будет получать одинаковое пространство памяти каждый раз или другое.
Это вопрос домашнего задания? – Jon
Нет, это ситуация в реальном времени. –