首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IDataReader::Dispose调用IDataReader::Close?

IDataReader::Dispose调用IDataReader::Close?
EN

Stack Overflow用户
提问于 2011-12-16 19:26:42
回答 4查看 981关注 0票数 3

我正在实现IDataReader,我想知道Dispose的实现是否应该调用Close

另外,Close是否应该调用Dispose

我猜Close不应该调用Dispose,而Dispose可以调用Close,因为AFAIK应该可以在任何对象中任意多次调用Dispose。但这只是猜测,我宁愿听听专家的意见。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-16 19:29:37

Close()Dispose()应该做同样的事情(其中一个应该调用另一个)。

但是,Close()不需要多次调用。

您应该继承基类DbDataReader类,而不是自己重新实现整个过程;如果是这样,则需要重写抽象Close()

票数 6
EN

Stack Overflow用户

发布于 2011-12-16 19:30:48

.Dispose()应该做一件事:释放非托管资源。因此,应该调用.Close(),当且仅当调用该函数是释放非托管资源的正确方式时。在这种情况下,我会说这是真的(它将释放一个数据库连接),因此您应该调用该函数。

票数 1
EN

Stack Overflow用户

发布于 2011-12-16 19:31:55

它们几乎都是一样的东西,除了Close可以被调用超过1次而没有异常。

如果您多次使用该对象,则实现.Close,如果只使用一次,则实现.Dispose()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8539165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档