Я использую следующий фрагмент кода, и я не уверен, что мне нужно вызвать методы Flush
(один раз на StreamWriter
, один раз на MemoryStream
):
//converts an xsd object to the corresponding xml string, using the UTF8 encoding
public string Serialize(T t)
{
using (var memoryStream = new MemoryStream())
{
var encoding = new UTF8Encoding(false);
using (var writer = new StreamWriter(memoryStream, encoding))
{
var serializer = new XmlSerializer(typeof (T));
serializer.Serialize(writer, t);
writer.Flush();
}
memoryStream.Flush();
return encoding.GetString(memoryStream.ToArray());
}
}
Прежде всего, поскольку код находится внутри блока using
, я думаю, что автоматически вызываемый метод dispose может сделать это для меня. Это правда, или смывает совершенно другую концепцию?
В соответствии с самим stackoverflow:
Значение смыва очищает все буферы для потока и заставляет любые буферизованные данные записываться в базовое устройство.
Что это значит в контексте вышеприведенного кода?
Во-вторых, метод flush MemoryStream
ничего не делает в соответствии с api, так что с этим? почему мы называем метод, который ничего не делает?