差不多就是这样。例如,如果我在 using 语句中有与数据库的连接,并且在我重定向到另一个页面的 using 语句中的某个位置,它会处理我的连接还是必须先手动调用它?
问问题
649 次
4 回答
7
是的,它绝对会调用Dispose
. using
语句的重点是Dispose
在块中调用finally
,因此无论块正常完成还是异常完成,资源都会被释放。
在那个 IIRC 中这里有一个轻微Response.Redirect
的皱纹,抛出一个ThreadAbortException
如果它被抓住会自动重新抛出,但这不应该影响一个finally
块。
于 2012-08-17T14:50:49.430 回答
2
它将正确处理连接。using
只是 . 的语法糖try/finally
。如果要确认行为,请替换 using for try/finally
。它将跳转到finally
重定向之前。
于 2012-08-17T14:52:39.717 回答
0
它将为您处理您的连接。
于 2012-08-17T14:50:29.540 回答
0
有几种情况Dispose()
不会被调用:
应用程序进入一个永远不会返回的无限循环。应用程序异常关闭。位于using
迭代器中,尚未实际输入 using。
你知道你没有前两个,因为你的进程既没有挂起也没有崩溃。你知道你有第三个,因为重定向在里面,using
所以不可能是这样。
于 2012-08-17T15:44:46.683 回答