为什么我的StringReader在新的XPathDocument(strReader)之后被清空了?

时间:2011-11-29 19:26:18

标签: c# xml stringreader

我很好奇为什么在我打电话之后我的StringReader会被清空:

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

l_xmlFile.content是一个字符串,并且已正确加载到xPathDoc但在此代码的最后一行strReader(即其_s成员)之后为null且长度为0为什么会这样? msdn

上没有提到这一点

2 个答案:

答案 0 :(得分:2)

MSDN:

  

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

这回答了吗?

答案 1 :(得分:2)

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

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