码迷,mamicode.com
首页 > 其他好文 > 详细

使用using释放资源

时间:2016-05-09 13:59:10      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

什么样的语句可以使用using管理?

解析:稀缺的资源,才需要using管理。

一.using释放的是托管资源还是非托管资源?

 

那么什么是托管资源和非托管资源呢?

 

托管资源是指由CLR管理分配和释放的资源,一般是托管内存,而非托管资源是由系统分配和释放的资源 一般地在CLR里new 一个对象或者分配一个数组都不需要手动去释放内
 
存, 而如windows里的句柄资源常常需要手动释放,如字体、刷子、DC等 所有的Window内核对象(句柄)都是非托管资源,如文件句柄、套接字句柄、窗体句柄。。。太多了
 
new出来的对象占用的内存是托管资源。
 

 

 

解析:非托管,C#应用托管到.NET Framework.但是他可以释放非托管资源。

 

 

二.using语句的作用

 

解析:作为关键字,using可以导入命名空间

 

      作为C#语句,using可以释放对象占用的内存资源,基本语法如下

 

using(SqlConnection con=new SqlConnection(""))
{
    //数据库操作代码
}

 

三.using语句的本质

 

解析:(既然using可以释放对象,那么是不是所有的对象前都可以使用using来限制呢?)

 

并不是这样;

 

using可以主动释放的对象都需要实现IDisable接口

 

既然实现了IDisable借口,也没必要全部使用using,我们只对那些系统性能有重要影响的对象进行using限定,而其他的对象可以交给离阿基回收处理器处理。

 

 

四.Dispose方法会自动调用Close()

 

 

要想让一个类型可以通过using管理,该类型或者父类必须实现了IDisposable接口。

 

using(SqlConnection con=new SqlConnection)
{

   //本质上自动调用了Dispose方法

}

 

 

 

 

 

1.close()dispose()区别?

 

解析:close()只是关闭连接,但是通道没有销毁,dispose()不仅把连接给关闭了,而且把通道也给销毁了。

 

使用using释放资源

标签:

原文地址:http://www.cnblogs.com/S2223/p/5473513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!