XPathDocument是否使用构造后使用的内存流

本文关键字:内存 是否 XPathDocument | 更新日期: 2023-09-27 18:29:00

我有这样的代码:

// Take the xml message and turn it into an object
var bytes = Encoding.ASCII.GetBytes(message);
var memoryStream = new MemoryStream(bytes);
XPathDocument xPathDocument = new XPathDocument(memoryStream);

我意识到我不会在任何地方清理MemoryStream。我只是想把它改成这个:

// Take the xml message and turn it into an object
var bytes = Encoding.ASCII.GetBytes(message);
var memoryStream = new MemoryStream(bytes);
XPathDocument xPathDocument;
using(memoryStream)
{
    xPathDocument = new XPathDocument(memoryStream);
}

但我不确定XPathDocument在构建后是否在内部使用MemoryStream。(如果是这样的话,我需要等待并在完成XPathDocument之后处理它。)

有人知道我什么时候可以处理这个MemoryStream吗?

XPathDocument是否使用构造后使用的内存流

不,这是一个很好的改变。一旦流被加载到xml中,就不再需要它了。

我希望它很好,它与我写的很多代码非常相似D

整个Stream都被读取和加载,所以是的,您可以用这种方式处理MemoryStream。

另一方面,MemoryStream实际上并不需要处理,它更像是一般的主体。如果它是FileStream或NetworkStream,using将是关键的。

如果您使用的内存流带有using块,最好将变量的范围限制在using块内,这样您就可以确保它不会在它之外使用,如下所示:

using (var memorystream = new MemoryStream(bytes))
{
    xPathDocument = new XPathDocument(memoryStream);
}