首页 新闻 搜索 专区 学院

C#中Close方法和Dispose方法的调用问题

0
[已解决问题] 解决于 2014-07-24 14:31

由于有些非托管代码需要调用,已经习惯了使用using,这样觉得代码既美观又好用。

今日因为做事物处理需要手动释放连接,就觉得奇怪。

SqlConnection 类中有Close方法和Dispose

类似的Stream 中也是的既有Close方法也有Dispose方法。

记得我自己实现IDispose接口时,Close方法中内部也是调用了Dispose方法。

照常理来说只要调用Close方法应该就行了吧。

为什么需要同时公开这两个方法呢?我想应该是有区别的,不然同时公开两个方法就没有意义了。网上有不少解释,但是都没有讲到关键点。

1.Close方法和Dispose方法是不是都需要调用?

2.如果都要调用有没有先后顺序?

3.using的作用仅仅调用Dispose方法吗?

最终的阿瓦隆的主页 最终的阿瓦隆 | 初学一级 | 园豆:111
提问于:2014-07-19 14:07
< >
分享
最佳答案
0

1.Close方法和Dispose方法是不是都需要调用?

从数据库层面来说:

Close,只是把这个对象暂时存到一个静态的队列里(叫链接池),这个对象依然链接着数据库。

Dispose,直接释放掉,和数据库断开了。

 

2.如果都要调用有没有先后顺序?

从1的答案去思考。

 

3.using的作用仅仅调用Dispose方法吗?

从1的答案去思考。

奖励园豆:5
路过秋天 | 老鸟四级 |园豆:4763 | 2014-07-20 11:46

Dispose 方法内部调用 Close

冰麟轻武 | 园豆:22 (初学一级) | 2014-07-30 20:22
其他回答(2)
0

Close里面调用Dispose方法

以FileStream的Close方法为例

wolfy | 园豆:2636 (老鸟四级) | 2014-07-19 15:13
0

只需要调用close即可

空明流光 | 园豆:69 (初学一级) | 2014-07-20 11:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册