请教using (SqlConnection conn = DBConnSql.SqlConn(connStr)){}

szjarvis 2017-07-06 06:21:11
using (SqlConnection conn = DBConnSql.SqlConn(connStr))
{
//无 try
}

用以上方法连接数据库,如果中途执行出错,conn会关闭并释放资源吗?
关闭我知道肯定会的,会Dispose吗?
...全文
321 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sypwish 2017-07-09
  • 打赏
  • 举报
回复
会执行finally中的代码块
xdashewan 2017-07-07
  • 打赏
  • 举报
回复
using确实有finnal的功效,但using本身不能替代try catch,当然如果可用if判断避免异常,同样不推荐try catch代替if
MoshangYanYu 2017-07-07
  • 打赏
  • 举报
回复
引用 2 楼 szjarvis 的回复:
谢谢楼上的解释,还有一种情况不明白: try { } catch(Exception err) { throw err; } finally { //释放资源 } 以上,在catch中直接throw err后,还会继续执行finally中的内容吗?
会的。。。finally块会执行的。。。你可以试试看
IEEE_China 2017-07-07
  • 打赏
  • 举报
回复
你可以设中断,自己调试一下,看看是不是真的释放了
闭包客 2017-07-07
  • 打赏
  • 举报
回复
using 是编译器给你的语法糖,等价于在 finally 块调用 Dispose 如果 finally 块在异常之后不执行,那么要 finally 有什么用呢?所以一定会执行的。
masanaka 2017-07-07
  • 打赏
  • 举报
回复
会,而且只有实装了dispose接口的类才能using
exception92 2017-07-07
  • 打赏
  • 举报
回复
会关闭,会释放资源。 using 就是把手动释放代码封装了一下。 finally 块中的东西不论是否有异常都会执行。
szjarvis 2017-07-07
  • 打赏
  • 举报
回复
谢谢楼上的解释,还有一种情况不明白: try { } catch(Exception err) { throw err; } finally { //释放资源 } 以上,在catch中直接throw err后,还会继续执行finally中的内容吗?
azhou88 2017-07-07
  • 打赏
  • 举报
回复
会的。楼上的这些人解释的还是不错的。
正怒月神 版主 2017-07-07
  • 打赏
  • 举报
回复
会的,放心吧
  • 打赏
  • 举报
回复
可以 托管资源由 .NET Framework 垃圾回收器 (GC) 释放 Using 块的工作方式类似于 Try...Finally 构造,在该构造中,Try 块使用资源,而 Finally 块释放资源。因此,不管您如何退出块,Using块都可确保资源的释放。 Using 语句获取的每个资源变量的范围仅限于 Using 块。 using语句提供了强制清理对象资源的便捷操作方式,允许指定何时释放对象的资源源。 所有拥有非托管资源的类型都会实现Idisposable接口

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧