0

我很好奇为什么我StringReader在调用这样的东西后会被清空:

        XPathDocument xPathDoc;
        StringReader strReader = new StringReader(l_xmlFile.content);
        xPathDoc = new XPathDocument(strReader);

l_xmlFile.content是一个字符串,并且已正确加载到xPathDoc但在此代码的最后一行strReader(即其_s成员)为空且长度为 0 之后。为什么会发生这种情况?msdn上没有提到这方面的内容

4

2 回答 2

2

MSDN:

在使用 TextReader 对象加载 XML 数据后,TextReader 对象的光标位于数据的末尾。必须重置 TextReader 对象才能再次读取数据。

这能回答吗?

于 2011-11-29T19:40:07.370 回答
2

这是 .NET 中非常常见的行为,XPathDocument 对象获取输入对象的所有权。并在完成读取后调用其 Dispose() 方法。_s重置内部和_length字段的是 StringReader.Dispose() 。

XPathDocument(TextReader) 构造函数的 MSDN 文档非常笨拙,但可以这样解释。

于 2011-11-29T19:59:40.333 回答