2011-11-29 48 views
0

我很好奇,为什么会之后我打电话这样的事情我StringReader被清空:为什么我的StringReader在新的XPathDocument(strReader)之后清空了?

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

l_xmlFile.content是一个字符串,并正确加载到xPathDoc但是这个代码strReader(即其_s成员)的最后行后为空,长度为0.为什么发生?有关此什么也不上msdn

回答

2

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

MSDN文档中的XPathDocument(TextReader的)构造是相当笨拙,但可以解释这样说。

+0

那么我该如何重新分配呢?这个:strReader = l_xmlFile.content;根本无法工作。和StringReader没有很多方法可供选择。 – Patryk

+0

约比如什么://摘要:// 创建一个包含所有生成用于与远程对象进行通信的代理需要 //相关信息的对象。 public virtual ObjRef CreateObjRef(Type requestedType); – Patryk

+1

为什么你必须重新分配它?为什么不再使用'strReader = new StringReader(l_xmlFile.content)'工作?远程处理与此有什么关系也是无法想象的。 –

2

MSDN提到:所述的TextReader对象已被用来加载XML数据

后,将的TextReader 对象的光标被定位在数据的结尾。 TextReader对象必须重置为通过数据再次读取 。

这样回答呢?

+0

好的谢谢,但我怎么能重置它? – Patryk

相关问题