Using关键字的使用
一:using语句
SqlConnection conn = new SqlConnection(connString);
try
{
conn.Open();
//……
}
finally
{
conn.Close();
}
在代码中,finally块中调用Close()方法释放连接,确保即使没有异常发生,连接也能被释放。除了使用try-catch-finally语句外,也可以通过使用using语句尽快释放资源
语法:
using(SqlConnection conn=new SqlConnection(connString))
{
//数据库操作代码
}
二 using 语句的两个作用:
①:作为关键字,using可以导入命名空间
②:作为C#语句,using可以释放对象占用的内存资源
注:
using可以让程序员不手动关闭连接对象
using释放的是托管资源还是非托管资源?
解析:
非托管,C#应用托管到.NET Framework.但是他可以释放非托管资源。
三 using语句原理
using可以释放对象,但并非所有的对象前都可以使用using来限制
原因:
using可以主动释放的对象都需要实现IDisable接口。
为什么出了using所在的{},会自动回收对象。
原因是当我们将要出{},系统自动调用了Dispose()方法。
而在DISpose方法中是这么实现的
注:Dispose方法会自动调用Close()
要想让一个类型可以通过using管理,该类型或者父类必须实现了IDisposable接口。
using(SqlConnection con=new SqlConnection)
{
//本质上自动调用了Dispose方法
}
close()和dispose()区别?
解析:
close()只是关闭连接,但是通道没有销毁,dispose()不仅把连接给关闭了,而且把通道也给销毁了。