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

arg*_*hel 1 c# dispose using-statement

我有一个Xmlreader,我想加载到'using'中的XMLDocument中:但是,问题是XMLDocument在完成后被处理掉(在xml.Load(reader)之后).我试过在'using'中包含一个int变量,它也会被处理掉.但是,在我创建'result'字符串的第一个'using'中,它在离开语句后不会被释放.为什么会这样?

        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);
        }
Run Code Online (Sandbox Code Playgroud)

Aas*_*set 7

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

XmlDocument xml;
using (XmlReader reader = XmlReader.Create(new StringReader(result)))
{
    reader.ReadToFollowing("ops:output");
    xml = new XmlDocument();
    xml.Load(reader);
}
// Now, xml exists here
Run Code Online (Sandbox Code Playgroud)