我正在实现IDataReader
,我想知道Dispose
的实现是否应该调用Close
。
另外,Close
应该打电话给Dispose
吗?
我的猜测是,Close
不应该调用Dispose
,Dispose
可以调用Close
因为 AFAIK 您应该能够在任何对象中根据需要多次调用Dispose
。但这只是一个猜测,我宁愿听听专家的意见。
Close()
和Dispose()
应该做同样的事情(一个应该调用另一个(。
但是,Close()
不需要多次调用。
你应该继承基DbDataReader
类,而不是自己重新实现整个东西;如果是这样,你需要覆盖抽象Close()
。
.Dispose()
应该只做一件事:释放非托管资源。 因此,当且仅当调用该函数是释放非托管资源的正确方法时,才应调用.Close()
。 在这种情况下,我会说这是真的(它将释放数据库连接(,所以你应该调用这个函数。
它们几乎是同一件事,除了 Close 可以调用 1 次以上而不会出现异常。
如果多次使用该对象,请实现 。关闭,如果只有一次,则实现 .Dispose((。
IDataReader
在界面中。它并不决定实施。