黑马程序员技术交流社区
标题:
using 与close(),dispose()d的区别
[打印本页]
作者:
严鹏
时间:
2012-2-13 20:03
标题:
using 与close(),dispose()d的区别
在ADO.Net中,using与close(),dispose()分别是怎样实现释放内存的,他们的使用与达到的效果有什么不同?
作者:
黄晓波
时间:
2012-2-13 20:35
close(),dispose()的区别:close()之后,在需要的时候还可以再open(),而dispose()之后就释放了内存中的数据,在需要的时候只能重新连接了再用。
作者:
严海彬
时间:
2012-2-17 10:43
using 会自动帮我们dispose ,dispose内部会判断相关链接是否关闭,如套接字,数据流,数据连接等,
close 只是把各种连接关闭,对象本生还存在,
dispose 是直接把对象销毁了
一个比喻就像从水龙头用水管来浇水,close只是吧水龙头关了,dispose是把水管都拔了
作者:
曹停
时间:
2012-2-17 18:10
建议下一本 你必须知道的.NET PDF看看!上面写的都是关于底层的东西!讲的非常好!全面讲解关系内存这块的问题!
多看几遍~很有帮助的!
作者:
王彬
时间:
2012-2-17 19:53
一个比喻就像从水龙头用水管来浇水,close只是吧水龙头关了,dispose是把水管都拔了
作者:
邓坤
时间:
2012-2-21 12:32
using在花括号结束时内部会自动帮我们dispose掉连接;close只是把打开的连接给关闭,还可以再次代开(即open),而dispose则直接把对象给销毁掉了,不能在直接open了,若要open还得重新创建连接
作者:
邱国
时间:
2012-5-3 11:11
严海彬 发表于 2012-2-17 10:43
using 会自动帮我们dispose ,dispose内部会判断相关链接是否关闭,如套接字,数据流,数据连接等,
close ...
即使 是dispose 了,sqlconnection的对象还是不会被销毁的,只是清空了连接字符串,所以再次open就不行了,如果再重新给连接字符串赋值了,还是可以open的,但是sqlconnection对象还是存在的,
这是我看到网上的一些解释,
作者:
错,谁的错丶
时间:
2012-5-7 20:37
close:关闭之后还能打开。
dispose:直接销毁,不能再次使用,
using 再出了作用域以后调用dispose。
e-g:
string str = "server...........";
SqlConnection conn = new SqlConnection(str);
{
conn.Open();
....
conn.close();//还能再打开
conn.Open();
....
conn.close();
conn.Dispose();//直接销毁
}
作者:
非常小可
时间:
2012-5-9 15:59
close () 是关闭 ,关闭之后再以再open() ,而dispose()是销毁,dispose()之后不可以再open()
作者:
邢欢
时间:
2012-5-11 14:08
using在大括号结束时会自动调用dispose(),dispose()调用前会自动检查是否close(),若否,则先调用close();close()只是把对应对象的相关属性关闭,还可以再次打开(即open()),而dispose()则直接把对应对象销毁,不能在直接open()了,若要open()还得重新创建对象
作者:
卞云鹏
时间:
2012-7-1 01:53
close()是关闭,也就是说,我们这个所创立的对象连接仍然在内存上并没有消失,而dispose 则是销毁,即:在内存上已经消失,不能够再用了
我们经常在VS连接数据库中会看到 conn.dispose(); 意味着当前你所创立且引用的对象链接已经销毁。下面的代码将无法使用链接
作者:
王国文
时间:
2012-7-15 21:37
connectiong是一条通往数据库的路,close()相当于在路上设置-路障,(dispose()方法是把路拆了,不能再open())dispose()是对实现Idispose非托管资源的释放,在调dispose方法的时候,它会自动的去判断数据库有没有关闭,如果没有就调用close()方法关闭,然后再调dispose()释放资源!using是出了大括号就调用dispose的方法
,这样避免程序员忘记,在msdn很多都是用这种方法,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2