这两者有什么区别?
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
}
不使用*
// Get response
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
答案 0 :(得分:4)
Using
要求应用于它的对象实现IDisposable
,并且当对象超出{{1}的范围时,将调用Dispose
IDisposable
方法阻塞(无论它如何离开该范围......通过正常执行,或者如果抛出using
)。
另一种变体是不好的做法......与Exception
相关的资源不会被清除。
请注意,在任何一种情况下都不会清除response
。您应该使用内部StreamReader
块来完成此任务。
答案 1 :(得分:2)
在块结束时自动调用第一个语法response.Dispose()
要在using
块中包含对象,必须实现IDisposable
接口
尽可能使用using
,因此您确定不要忘记释放已分配的对象。