在C#中using一般有两种称谓,第一种是using指令,另一种是using语句;称谓不一样他们的用途也是不一样的,作为指令,它用于为命名空间创建别名或导入其他命名空间中定义的类型,详见,解释的非常清楚。
而他作为语句,用于定义一个范围,当程序执行完此范围的代码后,将此范围中的对象在末尾释放掉。
比如,
1 2 3 4 | using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); //此处用到sdr对象 } //此处释放sdr对象,并关闭connection对象连接 |
在这段代码中,sdr对象包含在小括号中,说明当using下的这段代码不管是执行成功或失败,只要离开了这段代码,会自动调用sdr对象的Dispose方法。CommandBehavior.CloseConnection的作用是当command对象释放时,connection也跟着关闭。它跟下面这段代码效果是一致的:
Tryconn.Open()Return cmd.ExecuteNonQuery()cmd.Parameters.Clear()Catch ex As ExceptionReturn FalseFinally ' 关闭数据库连接,销毁cmd对象 If Not IsNothing(conn) Thenconn.Close()conn = NothingEnd IfIf Not IsNothing(cmd) Thencmd.Dispose()cmd = NothingEnd IfEnd Try