差不多那个。例如,如果我在using语句中和数据库中的某个地方连接到使用语句,我将其重定向到另一个页面,是否会处理我的连接,或者我是否必须先手动调用它?
答案 0 :(得分:7)
是的,绝对会拨打Dispose
。 using
语句的要点是在Dispose
块中调用finally
,因此无论块是正常完成还是异常,都将处置资源。
在IIRC中有一个轻微的皱纹,Response.Redirect
会抛出一个ThreadAbortException
,如果它被抓住会自动重新抛出,但这不会影响{{1}阻止。
答案 1 :(得分:2)
它会妥善处理连接。 using
只是try/finally
的语法糖。如果要确认该行为,请替换try/finally
的使用。在进行重定向之前,它会跳转到finally
。
答案 2 :(得分:0)
它将为您处理您的连接。
答案 3 :(得分:0)
有几种情况不会调用Dispose()
:
应用程序进入一个永远不会返回的无限循环。
应用程序不合适地关闭。
using
位于迭代器中,尚未实际输入。
你知道你没有前两个,因为你的过程既不悬挂也不崩溃。
你知道你是第三个,因为重定向在using
内,所以情况并非如此。