这两者之间的区别(使用“使用”)

时间:2011-10-22 17:15:41

标签: .net

这两者有什么区别?

// 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());

2 个答案:

答案 0 :(得分:4)

Using要求应用于它的对象实现IDisposable,并且当对象超出{{1}的范围时,将调用Dispose IDisposable方法阻塞(无论它如何离开该范围......通过正常执行,或者如果抛出using)。

另一种变体是不好的做法......与Exception相关的资源不会被清除。

请注意,在任何一种情况下都不会清除response。您应该使用内部StreamReader块来完成此任务。

答案 1 :(得分:2)

在块结束时自动调用第一个语法response.Dispose() 要在using块中包含对象,必须实现IDisposable接口 尽可能使用using,因此您确定不要忘记释放已分配的对象。