using (SqlConnection conn = new SqlConnection(connString)) ?

andylauxing 2010-10-18 10:11:26
请问如下语句,为什么都在前面加上using ,这是什么意思呀?

using (SqlConnection conn = new SqlConnection(connString)) {

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;
}


//****************************************
using (SqlCommand cmd = new SqlCommand())
{
cmd.ExecuteNonQuery();
}


...全文
555 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
蔡袅 2010-10-18
  • 打赏
  • 举报
回复
一句话:
用完了自动释放对象资源
loveyan52112 2010-10-18
  • 打赏
  • 举报
回复
你看每个cs文件中的开头部分都会有
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
这些个using是做什么的你应该很清楚了吧。。那个using其实和这个是同理的,只是规定实现这段代码的一个使用范围
macdonald25 2010-10-18
  • 打赏
  • 举报
回复
using (SqlConnection conn = new SqlConnection(connString)) {

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();

return val;
}

不需要自己去关闭连接,在using执行完之后,using代码块中所创建的变量,资源都会被Disposable,无需手动处理。
sweetqueen1 2010-10-18
  • 打赏
  • 举报
回复
是指引用 类
火柴没帽 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dongxinxi 的回复:]

在 using 语句中创建一个实例,确保退出 using 语句时在对象上调用 Dispose。当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句。

实例化的对象必须实现 System.IDisposable 接口。

简单点说就是可以自动释放对象(托管资源)
[/Quote]
+1
  • 打赏
  • 举报
回复
在 using 语句中创建一个实例,确保退出 using 语句时在对象上调用 Dispose。当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句。

实例化的对象必须实现 System.IDisposable 接口。

简单点说就是可以自动释放对象(托管资源)
边城的刀声 2010-10-18
  • 打赏
  • 举报
回复
using 转成IL后就是和try{}finaly{}一样的
using()中的类是实现了IDisposable接口的,finaly{}中会调用obj.Dispose()的
周药师 2010-10-18
  • 打赏
  • 举报
回复
using 指允许在命名空间中使用类型
using (SqlConnection conn = new SqlConnection(connString)) 这是在使用的地方调用

你可以在文件头部加上
using System.Data.SqlClient
这样这个单元都直接调用这样了


q107770540 2010-10-18
  • 打赏
  • 举报
回复
你也可以这样:

SqlConnection conn = new SqlConnection(connString) ;

PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);

int val = cmd.ExecuteNonQuery();

cmd.Parameters.Clear();
conn.Close(); //...
return val;
ddb0911 2010-10-18
  • 打赏
  • 举报
回复
最佳答案using 语句定义一个范围,在此范围的末尾将处理对象。

using (expression | type identifier = initializer) statement
其中:

expression
希望在退出 using 语句时调用 Dispose 的表达式。
type
identifier 的类型。
identifier
type 类型的名称或标识符。定义一个以上 type 类型的 identifier 是可以的。在每一个 identifier = initializer 的前边都有一个逗号。
initializer
创建对象的表达式。
statement
嵌入的语句或要执行的语句。
备注
在 using 语句中创建一个实例,确保退出 using 语句时在对象上调用 Dispose。当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句。

实例化的对象必须实现 System.IDisposable 接口。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧