C# IDataReader::Dispose是否应调用IDataReader::Close?

C# IDataReader::Dispose是否应调用IDataReader::Close?,c#,idatareader,C#,Idatareader,我正在实现IDataReader,我想知道Dispose的实现是否应该调用Close 另外,是否应关闭调用处置 我的猜测是Close不应该调用Dispose,Dispose可以调用Close,因为在任何对象中,您都应该能够调用Dispose任意次数。但这只是一个猜测,我宁愿听听专家的意见。IDataReader在界面中。它不指示实现。Close()和Dispose()应该做同样的事情(一个应该调用另一个)。 但是,Close()不需要多次调用 您应该继承基本的DbDataReader类,而不是自

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

另外,是否应
关闭
调用
处置


我的猜测是
Close
不应该调用
Dispose
Dispose
可以调用
Close
,因为在任何对象中,您都应该能够调用
Dispose
任意次数。但这只是一个猜测,我宁愿听听专家的意见。

IDataReader
在界面中。它不指示实现。

Close()
Dispose()
应该做同样的事情(一个应该调用另一个)。
但是,
Close()
不需要多次调用


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

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

它们几乎是一样的,只是Close可以被调用一次以上而不会出现异常


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

那么人们为什么要为接口编写文档呢?嗯。。。为了记录它们?记录它们的实现应该做什么?记录它们的所有实现打算做什么。未记录的内容可能不是接口的一部分(比如Dispose是否必须调用Close,反之亦然),我只是注意到它是IDataReader接口与类sorry SLaks