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. jquery html属性和text属性的区别

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Lind.DDD~实体属性变更追踪器的实现

    回到目录 看着这个标题很复杂,大叔把它拆开说一下,实体属性-变更-追踪器,把它拆成三部分大家看起来就容易懂一些了,实体属性:领域实体里有自己的属性,属性有getter,setter块,用来返回和设置属 ...

  3. PHP的变量和常量

  4. mariadb 10.2.3支持oracle execute immediate语法

    在之前的版本包括oracle mysql/percona server版本中,所有的动态SQL都需要通过prepare执行,如下: "; execute stmt; deallocate p ...

  5. maven 间接依赖的jar自动引入

    很多时候,我们引用的第三方jar需要一些其他的第三方jar,这个时候默认情况下,间接需要依赖的第三方jar是不会自动被引入的,如果希望这些额外的三方jar被自动引入,则在Maven仓库中除了提交jar ...

  6. jQuery DateTimePicker 日期控件

    在线实例 实例演示 使用方法 <input id="datetimepicker" type="text" > 复制 $('#datetimepic ...

  7. highCharts提示框不显示的问题

    使用HighCharts插件进行数据展示的时候,鼠标放在数据处没有提示框,或者只有头尾2个提示框,其他提示框不显示,为什么会这样? 1.查看是否使用了tooltip属性,该属性的enabled默认为t ...

  8. 解决JqueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug

    前些日子不是在做 使用Jquery-UI实现一次拖拽多个选中的元素操作嘛,在持续完善这个组件时遇到了一个关于拖放排序的bug.今天就着图片和代码重现一下,也顺便告诉大家如何解决这个问题. 首先先上图描 ...

  9. 请将项目文件中的“AutoGenerateBindingRedirects”属性设置为 true 警告!!!

  10. SharePoint Framework:下一代开发方式

    SharePoint Framework(SPFx),是页面 和Webpart的模型,完全支持本地开发(即完全可以脱离SharPoint环境在本地进行开发),听起来是不是很高级呢,早期SharePoi ...