版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xml1996/article/details/85342654
在C#的学习之初,就接触到了Try…Catch…Finally 和Using,但是并没有进行对比应用,希望可以用表格对比+实例应用帮助你理解:
对比认识:
对比 | 主要用途 |
---|---|
Try…Catch…Finally | try块中获取并使用资源;catch块中处理异常:finally块中释放资源 |
using | 作为指令:命名空间创建别名或者导入其他命名空间中定义的类型 ;作为语句:定义范围 |
对比 | 释放资源 | 捕获异常 |
---|---|---|
Try…Catch…Finally | finally块中释放资源,需要写代码的人自己释放对象代码 | catch可以 |
using | 作为语句:定义范围,在范围的末尾主动释放对象 | 不能 |
小毛驴举个栗子
//该方法对传入的参数进行增删改SQL语句执行
public int ExecuteNonQuery(string sql)
{
int res;
//就是执行一个数据库操作语句sql并调用打开数据库的方法GET()
SqlCommand cmd = new SqlCommand(sql, GET());
//通过这个ExecuteNonQuery()方法把参数传进去,进行增删改操作
res = cmd.ExecuteNonQuery();
//如果 数据库状态= 连接
if (conn.State==ConnectionState.Open )
{
//那么把它关闭
conn.Close();
}
return res;
}
应用Try…Catch…Finally之后:
//该方法对传入的参数进行增删改SQL语句执行
public int ExecuteNonQuery(string sql)
{
int res;
try
{
SqlCommand cmd = new SqlCommand(sql, GET());
res = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally//进行释放资源
{
if (conn.State==ConnectionState.Open )
{
conn.Close();//执行数据关闭
}
}
}
应用Using之后:
public int ExecuteNonQuery(string sql)
{
int res;
using ( SqlCommand cmd = new SqlCommand(sql, GET())//using 会自己释放资源
{
res = cmd.ExecuteNonQuery();
}
return res;
}
相信对比一下,你大概就可以理解释放资源了
小毛驴今天先总结到这里,欢迎指正交流!