我用下面的代码片段,我不确定我是否需要调用Flush
方法(一次在StreamWriter
,一旦MemoryStream
):C#冲洗的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方法可能会为我执行此操作。这是真的,还是冲淡一个完全不同的概念?
根据计算器本身:
冲洗含义清除一个流的所有缓冲区并使所有缓冲数据被写入到下面的设备。
在上面的代码中,这意味着什么?
其次,冲洗方法的MemoryStream
does nothing according to the api,所以这是怎么回事?为什么我们要调用一种什么都不做的方法?
您不必做Flush(),因为您已经放入了“使用”:Writer/Reader将在Close/Dispose中自动关闭它们的缓冲区。如果你想加载/保存时间结果(比如一半的流)并且继续使用streem(s),Flush()是有用的。 –