我很好奇为什么在我打电话之后我的StringReader
会被清空:
XPathDocument xPathDoc;
StringReader strReader = new StringReader(l_xmlFile.content);
xPathDoc = new XPathDocument(strReader);
l_xmlFile.content
是一个字符串,并且已正确加载到xPathDoc
但在此代码的最后一行strReader
(即其_s
成员)之后为null且长度为0为什么会这样? msdn
答案 0 :(得分:2)
MSDN:
使用TextReader对象加载XML数据后,TextReader的光标 对象位于数据的末尾。必须重置TextReader对象才能读取 再次通过数据。
这回答了吗?
答案 1 :(得分:2)
这是.NET中非常常见的行为,XPathDocument对象取得输入对象的所有权。并在完成读取后调用其Dispose()方法。 StringReader.Dispose()用于重置内部_s
和_length
字段。
XPathDocument(TextReader)构造函数的MSDN文档非常笨拙,但可以解释为这样。