我正在实施IDataReader
,我想知道Dispose
的实施是否应该调用Close
。
另外,Close
应该致电Dispose
吗?
我的猜测是Close
不应该致电Dispose
而Dispose
可以致电Close
,因为AFAIK你应该能够在任何对象中多次调用Dispose
。但这只是一个猜测,我宁愿听取专家的意见。
答案 0 :(得分:6)
Close()
和Dispose()
应该做同样的事情(一个应该调用另一个)
但是,Close()
不需要多次调用。
你应该继承基础DbDataReader
类,而不是自己重新实现整个事物;如果是这样,您需要覆盖抽象Close()
。
答案 1 :(得分:1)
.Dispose()
应该完成一件事:释放非托管资源。因此,当且仅当调用该函数是释放非托管资源的正确方法时,才应调用.Close()
。在这种情况下,我会说这是真的(它将释放数据库连接),所以你应该调用该函数。
答案 2 :(得分:1)
它们几乎是相同的东西,除了可以被调用超过1次而没有得到异常。
如果多次使用该对象,请实现.Close,如果只执行一次,则实现.Dispose()。
答案 3 :(得分:-1)
IDataReader
在界面中。它没有规定实施。