黑马程序员技术交流社区
标题:
关于using用法疑问
[打印本页]
作者:
李荣壮
时间:
2011-10-29 01:52
标题:
关于using用法疑问
using最常见的用法就是在每个代码的前面指定命令空间了,
好像还有一种用法,像try一样用的,不是很了解,
希望大家讲解下,谢谢了。
作者:
黄朝辉
时间:
2011-10-29 08:19
using()
{
}
这种么?
简单的理解 就是用完后释放
也就是执行了下
X.Dispose();
作者:
杨恩锋
时间:
2011-10-29 10:30
除了你说的平常用的引入命名空间,还有一个就是为命名空间或者类型创建别名,比如 using Department=Business.MyCompany.Department,再一个就是数据库里通过using()块来对资源的释放,这通过调用Dispose方法来释放。
作者:
陈涛
时间:
2011-10-29 16:30
using 一个是导某个命名空间,一个是在数据访问层中可以自动关闭和释放连接 try的话 我只知道try catch finally抛异常.
作者:
10642491
时间:
2011-10-30 07:32
ADO.Net中的连接等资源都实现了IDisposable接口,可以使用using进行资源管理,连接资源作用域在using(){}的花括号里面,出了花括号即会被垃圾回收器回收,所以使用起来很方便,比用try catch finally代码更加简洁。
比如下面用using
using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;
AttachDBFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;User Instance=True"))
{
conn.Open();
Console.WriteLine("连接成功!");
}
复制代码
如果用try{}catch{}finally{}来看一下效果:
SqlConnection con = null;
try
{
con = new SqlConnection(@"Data Source=.\SQLEXPRESS;
AttachDBFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;User Instance=True");
con.Open();
Console.WriteLine("连接成功!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
con.Close();
}
复制代码
作者:
章坚
时间:
2011-11-1 14:08
USING(){} 是临时引用进来一个命名空间使用这个命名空间里面的东西 使用方便简洁 且在跳出大括号后 及时进行垃圾回收方便
作者:
宋天琪
时间:
2011-11-5 09:36
using(资源类型 资源变量 =new 等表达式){ 代码块语句 }
作者:
yy312232557
时间:
2011-11-5 23:58
其实Using 是一种简单的写法,他的内部呢,是已经帮你实现了try{...}catch{...} finally{....} 的内容,你可以用反编译工具进去看看微软是如何实现的
using()
{
}
在ADO.NET的操作中,如果你用了
Using代买块
将数据库的连接和打开的一系列代码写在里面,你就可以放心大胆的往下写,就不用担心数据库连接打开和关闭的那些问题。
但当然你也可以用try{...}catch{...} finally{....} 来自己手动打开关闭数据库连接池等,但是你不觉得那样麻烦吗?而且一不小心就弄错了
所以建议还是使用
Using代买块来包吧
作者:
毕山山
时间:
2011-11-12 22:01
在c#中,using 关键字有两个主要用途:
作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。
1、引入命名空间,如using System
2、为命名空间或类型创建别名。这称为“using 别名指令”,如using alias=NamespaceName;
作为语句,用于定义一个范围,在此范围的末尾将对象释放。
如代码:
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(new SqlParameter("@username", username));
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
dr.Read();
if (dr.HasRows)
{
if (dr["password"].ToString() == psw)
{
m_user.login = username;
m_user.num = 0;
}
else
{
m_user.num = 2;
}
}
else
{
m_user.num = 1;
}
}
}
用完之后conn,cmd,dr会自动释放,等效于调用dispose()方法,用起来方便.
作者:
王绚文
时间:
2011-11-13 13:38
using里有实现了IDisposable接口的语句的时候
当出了using后 系统自动释放资源 调用dispose方法
不需要我们再手动调用!
作者:
周大俊
时间:
2011-11-15 14:27
using()
{
...
}
执行完花括号中的语句后,对括号中的语句所占用的资源进行释放,效果同try{}catch{},不过更简洁而已。
作者:
何旭
时间:
2011-12-13 13:12
GC只能回收内存中的托管对象资源,对于非托管对象例如:数据库连接,文件句柄关于很多直接和硬件打交道的资源,GC是不能涉及的
所以.Net有了IDisposable接口,IDisposable接口定义了Dispose方法,这个方法用来供程序员显式调用以释放非托管资源。使用using语句可以简化资源管理。
using(){}自动帮我们调用Dispose 方法,和try{}catch(){}finally{file.Dispose()}差不多
using (MyFile file = new MyFile()) { 6 file.OpenFile(); 7 } 8 Console.ReadKey();
复制代码
作者:
何旭
时间:
2011-12-13 13:14
上面都说到GC只能回收内存中的托管对象资源,对于非托管对象例如:数据库连接,文件句柄关于很多直接和硬件打交道的资源,GC是不能涉及的
所以.Net有了IDisposable接口,IDisposable接口定义了Dispose方法,这个方法用来供程序员显式调用以释放非托管资源。使用using语句可以简化资源管理。
using(){}自动帮我们调用Dispose 方法,和try{}catch(){}finally{file.Dispose()}差不多
复制代码
using (MyFile file = new MyFile()) { 6 file.OpenFile(); 7 } 8 Console.ReadKey();
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2