A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© songFeng4985 中级黑马   /  2012-12-7 15:00  /  1115 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有时候基本的也是很有意思的,反倒是更深层次的。比如Disponse()和Close()二者的区别和关系,以前就没有在意过为什么是这样设计的。希望哪位高手能详解一下

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
杨中科老师解释过,用完水后,close好比关掉水龙头,但可以再打开使用(open),dispose好比直接拆掉这个水龙头,再用得重装个新的(new)。

点评

对对对,就是这句!  发表于 2012-12-10 10:23

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
比如说对一个connection对象,close之后还在连接池中,Disponse是直接把连接对象销毁掉~~

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
学习了。你们都是自学的吗?
回复 使用道具 举报
在.Net Framework里,Close()被设计成public的,并且在Close()里面调用被隐藏的Dispose(); 而后Dispose()再去调用另一个virtual的Dispose(bool)函数。所以如果从这个class继承,你就必须实现Dispose(bool)方法。调用者通过调用Close()就会间接调用到你重载的那个Dispose(bool)方法去释放资源了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马