我有以下功能,它采用url路径并获取读者。因为我无法关闭读者并将其归还。调用者可以关闭返回的读者对象。
public XmlReader GetXMLContent(string Path)
{
XmlTextReader responseReader= new XmlTextReader(XmlUrlPath);
return responseReader;
}
XmlTextReader myReader = GetXMLContent("http://sample.xml");
while() // loop through all the elements
{
}
myReader.close(); // close the reader
答案 0 :(得分:2)
是的,绝对的。当方法返回时,调用者已经有效地取得了读者的所有权(在这种特殊情况下)。
不可否认,我会使用using
声明代替:
using (XmlTextReader reader = GetXmlContent("http://sample.xml"))
{
...
}
...使用您当前提出的代码,如果抛出异常,您将不会关闭阅读器。
答案 1 :(得分:2)
您不应该使用XmlTextReader
构造函数。您应该使用XmlReader
中的facrory方法。 As described in the docs:
在.NET Framework 2.0版中 发布,建议的做法是 使用创建XmlReader实例 XmlReader.Create方法。这个 让您充分利用 这里介绍的新功能 释放。
除非您的方法针对此帖子进行了简化,否则这也会使您的方法过时。
using (XmlReader r = XmlReader.Create("http://sample.xml"))
{
// read
}
如果您需要这种方法,您可以这样做:
public XmlReader GetXMLContent(string path)
{
XmlReader responseReader = XmlReader.Create(path);
// do something special
return responseReader;
}
using(XmlReader r = this.GetXMLContent("http://sample.xml"))
{
// read
}