我正在实现IDataReader,我想知道Dispose的实现是否应该调用Close。
另外,Close是否应该调用Dispose
我猜Close不应该调用Dispose,而Dispose可以调用Close,因为AFAIK应该可以在任何对象中任意多次调用Dispose。但这只是猜测,我宁愿听听专家的意见。
发布于 2011-12-16 19:29:37
Close()和Dispose()应该做同样的事情(其中一个应该调用另一个)。
但是,Close()不需要多次调用。
您应该继承基类DbDataReader类,而不是自己重新实现整个过程;如果是这样,则需要重写抽象Close()。
发布于 2011-12-16 19:30:48
.Dispose()应该做一件事:释放非托管资源。因此,应该调用.Close(),当且仅当调用该函数是释放非托管资源的正确方式时。在这种情况下,我会说这是真的(它将释放一个数据库连接),因此您应该调用该函数。
发布于 2011-12-16 19:31:55
它们几乎都是一样的东西,除了Close可以被调用超过1次而没有异常。
如果您多次使用该对象,则实现.Close,如果只使用一次,则实现.Dispose()。
https://stackoverflow.com/questions/8539165
复制相似问题