由IDisposable接口导致的using使用 以及using的其他用法
2011-02-09 20:23
537 查看
在ADO.NET中,通过SqlConnection类创建SQLServer的连接,SqlConnection类实现了IDisposable接口.想这样实现了这个接口的类如果被实例化了,并不会被系统回收,所以要手动回收。
除了使用using(SqlConnection conn = new SqlConnection(strConn)){},
我们还可以,try{}finally{conn.close();conn.dispose();}
using使用总结(以下为转载部分,来自:http://www.cnblogs.com/hefei_wangyan/archive/2011/01/05/1926557.html)
using这个关键字在C#中共用三个用法:
1. using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。
例如:using System; 一般都会出现在*.cs中。
2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。
3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。
除了使用using(SqlConnection conn = new SqlConnection(strConn)){},
我们还可以,try{}finally{conn.close();conn.dispose();}
using使用总结(以下为转载部分,来自:http://www.cnblogs.com/hefei_wangyan/archive/2011/01/05/1926557.html)
using这个关键字在C#中共用三个用法:
1. using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。
例如:using System; 一般都会出现在*.cs中。
2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。
3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。
相关文章推荐
- C#中using以及实现接口IDisposable的使用方法
- 接口的概述,使用以及其与抽象类,类的区别和用法
- android如何使用自己定义JNI接口,以及NDK环境建设和使用的工具。
- c++默认的构造函数或其他函数,以及这个函数的使用或者不使用
- 接口调用以及memcache的使用
- 使用getBackground().setAlpha,导致其他布局背景透明度都改变的问题
- SuperMap Objects 中 soRecordset 使用,以及其他注意事项
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
- 面试题----new/delete、malloc/free、new[]/delete[]的用法与区别以及new的三种使用方法
- 详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法
- 当局域网内某台主机使用P2P进行下载时,P2P软件会占用局域网到互联网出口的大量的带宽,导致其他用户网速慢、卡等现象。BT等软件在下载的同时又作为种子为其他人提供下载服务
- 使用ADempiere 3.6.0 LTS的WEB访问以及其他的一些访问方法及工具(基于Ubuntu Desktop 12.04 LTS)
- Java数组排序Arrays.sort,以及Comparator接口的用法
- c++中vector的使用:如何求二维vector的大小以及insert函数的用法
- Spring中的IOC(四):IOC中其他接口的使用及Spring的事件处理机制(监听机制)
- Java接口定义以及使用(代理设计)
- 使用getBackground().setAlpha,导致其他布局背景透明度都改变的问题
- Comparable 接口以及Comparator接口的简单使用
- 关于oracle with table as 创建临时表的用法示例以及使用with as 的优点
- c#中数组,类型转换,using语句的其他用法