我使用以下代码片段,我不确定是否需要调用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 不执行任何操作 http://msdn.microsoft.com/en-us/library/system.io.memorystream.flush%28v=vs.110%29.aspx,那这是怎么回事?为什么我们调用一个不执行任何操作的方法?
你不需要使用Flush
on the StreamWriter
,当您处置它时(通过将其放在using
堵塞)。当它被处理后,它会自动冲洗并关闭。
你不需要使用Flush
on the MemoryStream
,因为它不缓冲写入任何其他源的任何内容。根本没有什么地方可以冲洗。
The Flush
方法仅存在于MemoryStream
对象,因为它继承自Stream
班级。您可以在的源代码MemoryStream class http://referencesource.microsoft.com/#mscorlib/system/io/memorystream.cs,1a4dcb744a23ba6f认为flush
方法实际上什么也没做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)