如何访问我在该块之外的使用块中填充的变量?

时间:2014-06-05 15:33:55

标签: c# dispose using-statement

我有一个Xmlreader,我想加载到'里面的XMLDocument中使用': 但是,问题是XMLDocument一旦完成就会被释放(在xml.Load(reader)之后)。 我试过在'中使用'包含一个int变量。它也被处理掉了。 但是,在第一次使用'在哪里我创造了'结果'字符串,离开声明后不会被处理掉。 为什么会这样?

        HttpWebRequest req = WebRequest.Create(URL_GET.ToString()) as HttpWebRequest;
        string result = null;
        using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
        {
            StreamReader reader = new StreamReader(resp.GetResponseStream());
            result = reader.ReadToEnd();
        }            
        using (XmlReader reader = XmlReader.Create(new StringReader(result)))
        {
            reader.ReadToFollowing("ops:output");
            XmlDocument xml = new XmlDocument();
            xml.Load(reader);
        }

1 个答案:

答案 0 :(得分:7)

xml没有被处置;它只是超出范围,因此变量不再可访问 - 但是,它所引用的对象没有发生任何变化。只需在xml范围之外声明using

XmlDocument xml;
using (XmlReader reader = XmlReader.Create(new StringReader(result)))
{
    reader.ReadToFollowing("ops:output");
    xml = new XmlDocument();
    xml.Load(reader);
}
// Now, xml exists here
相关问题