using关键字

using 关键字可以用来导命名空间,与java中的import类似.

我使用using的地方

       using(SqlConnection con=new SplConnection(connString))
{
using(SqlCommand cmd=new SqlCommand(cmdTxt,con))

using的原理

为什么出了using所在的{},会自动回收对象。

原因是当我们将要出{},系统自动调用了Dispose()方法。

而在DISpose方法中是这么实现的

using语句的作用

1.作为关键字,using可以导入命名空间.

2.作为C#语句,using可以释放对象占用的内存资源.

using语句的本质

既然using可以释放对象,那么是不是在所有的对象前都可以用using来限制?  <不是>

原因如下:

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

2.即使都实现了IDisable接口,也没有必要全部使用using.我们只对那些对系统性能有重要影响的对象进行using限定,而其他的对象可以交给垃圾回收器处理.

哪些对象才可以使用Using回收!

必须实现了IDisposable 接口的类型才可以使用using回收!

using回收的是托管还是非托管资源?

解析:什么是托管:所有的C#代码都是被CLR监管,

结论是using回收的是 非托管资源!

Using释放的是托管资源还是非托管资源?

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

Dispose方法会自动调用Close()

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

using(SqlConnection con=new SqlConnection)

{

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

}

close()和dispose()区别?

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

使用using释放资源的更多相关文章

  1. using 释放资源

    我们知道使用C#程序访问数据库资源需要几个步骤:创建连接,打开连接,访问数据库,关闭连接,基本架构如下: SqlConnection conn = new SqlConnection(connStri ...

  2. COCOS2D 释放资源的最佳时机

    有场景A跟场景B,场景A是当前场景,场景B是将要替换的新场景. 那么A场景的资源释放最佳时机是在什么时候呢? 这是释放资源的代码(注意要按这个顺序释放): 1 2 3 4 CCAnimationCac ...

  3. C++异常(exception)第三篇-------如何释放资源(没有finally语句)

    问题: C++中没有finally,那么应该在哪里关闭资源? C++的try{}catch(){},为什么没有finally{}块来释放资源? 如类中的一个方法,局部变量 File * file=NU ...

  4. using 自动释放资源示例

    我们在使用SqlConnection的时候可以加入using,那么在using语句结束后就会自动关闭连接.那么这种情况是怎么是实现的呢?我们能够自己写一个类似于SqlConnection的类来让usi ...

  5. c#:使用using关键字自动释放资源未必一定就会有明显好处

    public string ToXML() { string strXml = string.Empty; try { MemoryStream ms = new MemoryStream(); Xm ...

  6. Spark2 jar包运行完成,退出spark,释放资源

    import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.spark ...

  7. C#继承IDisposable释放资源

    public class CDisposable : IDisposable { //析构函数,编译后变成 protected void Finalize(),GC会在回收对象前会调用调用该方法 ~C ...

  8. 【数据库】java链接jdbc 释放资源

    /* *   编写快速 入门的jdbc 程序 : *    *    1. 先导入 具体的驱动jar包 *    2. 编写一个类 , 写jdbc 的程序 *  *  具体的编写 java类的 代码的 ...

  9. java7(3)——增强的catch之自动释放资源

    跟mutilcatch一样,java7提供了自动释放资源的方法,但还是很少看到人使用,估计是麻烦去重写close方法.不过jdk内部一些类已经改成使用增强的catch来释放资源的写法,所以我们有必要了 ...

  10. C# 释放资源的规范写法

    static class CSharp_3 { /* ---------------------------------------- * 以下学习资源的释放:IDispose和析构函数 * 1.ID ...

随机推荐

  1. Myeclipse启动报错: Invalid 'log4jConfigLocation' parameter

    java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: class path resource [lo ...

  2. struts2中错误There is no Action mapped for namespace [/] and action name [] associated with context path

    1 There is no Action mapped for namespace [/] and action name [] associated with context path [/Stru ...

  3. Java程序员应该知道的10个调试技巧

    试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运 ...

  4. 变通实现微服务的per request以提高IO效率(三)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  5. kafkaspot在ack机制下如何保证内存不溢

    新浪微博:intsmaze刘洋洋哥.   storm框架中的kafkaspout类实现的是BaseRichSpout,它里面已经重写了fail和ack方法,所以我们的bolt必须实现ack机制,就可以 ...

  6. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  7. iOS如何用代码控制以不同屏幕方向打开新页面?

    转载:http://blogread.cn/it/article/7765?f=wb#original 代码示例:https://github.com/johnlui/Swift-On-iOS/tre ...

  8. VS中如何快捷地给自己的代码添加创建信息注释

    VS中如何快捷地给自己的代码添加创建信息注释 Intro 以下讨论的都是没有使用 GIT 来管理源代码的情况,如果使用 GIT 管理源代码可直接使用VS的Git扩展就不需要考虑以下问题. 什么是创建信 ...

  9. 在sharepoint2013中如使用PowerView

    在sharepoint2013中如使用PowerView 安装前提 Sql sqlserver 2012 sp1 Sharepoint2013 Sql server 2012 sp1 PowerPiv ...

  10. C++序列化、反序列化

    几个常见的库 http://stackoverflow.com/questions/3637581/fastest-c-serialization Boost: Fast, assorted C++ ...