理解using语句

roh*_*ngh 1 .net c# using-statement

我写了两个代码:

代码块1:

Stream dataStream;
using (var response = (HttpWebResponse)req.GetResponse())
{
    dataStream = response.GetResponseStream();
}

//Open the stream using a StreamReader for easy access
using (var reader = new StreamReader(dataStream))
{
    data = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

代码块2:

Stream dataStream;
using (var response = (HttpWebResponse)req.GetResponse())
{
    dataStream = response.GetResponseStream();

    //Open the stream using a StreamReader for easy access
    using (var reader = new StreamReader(dataStream))
    {
        data = reader.ReadToEnd();
    }
}
Run Code Online (Sandbox Code Playgroud)

代码块1抛出错误:stream is not reachable.
虽然在进步中我认为两个代码将工作相同.
我在代码块2中添加了使用块到整个语句,它正在工作.
但我很困惑,为什么它会在代码块1中抛出错误

Tre*_*ley 5

根据您指定的行为,似乎在HttpWebResponse处置时,它会处理响应流.