由于有些非托管代码需要调用,已经习惯了使用using,这样觉得代码既美观又好用。
今日因为做事物处理需要手动释放连接,就觉得奇怪。
SqlConnection 类中有Close方法和Dispose
类似的Stream 中也是的既有Close方法也有Dispose方法。
记得我自己实现IDispose接口时,Close方法中内部也是调用了Dispose方法。
照常理来说只要调用Close方法应该就行了吧。
为什么需要同时公开这两个方法呢?我想应该是有区别的,不然同时公开两个方法就没有意义了。网上有不少解释,但是都没有讲到关键点。
1.Close方法和Dispose方法是不是都需要调用?
2.如果都要调用有没有先后顺序?
3.using的作用仅仅调用Dispose方法吗?
1.Close方法和Dispose方法是不是都需要调用?
从数据库层面来说:
Close,只是把这个对象暂时存到一个静态的队列里(叫链接池),这个对象依然链接着数据库。
Dispose,直接释放掉,和数据库断开了。
2.如果都要调用有没有先后顺序?
从1的答案去思考。
3.using的作用仅仅调用Dispose方法吗?
从1的答案去思考。
Dispose 方法内部调用 Close
Close里面调用Dispose方法
以FileStream的Close方法为例
只需要调用close即可