我正在实现 IDataReader
接口,想知道是否应该在 Dispose
方法中调用 Close
方法。
另外,Close
方法是否应该调用 Dispose
方法?
我的猜测是,Close
方法不应该调用 Dispose
方法,而 Dispose
方法可以调用 Close
方法,因为根据我所知,你可以在任何对象中多次调用 Dispose
方法。但这只是我的猜测,我更愿意听取专家的意见。
我正在实现 IDataReader
接口,想知道是否应该在 Dispose
方法中调用 Close
方法。
另外,Close
方法是否应该调用 Dispose
方法?
我的猜测是,Close
方法不应该调用 Dispose
方法,而 Dispose
方法可以调用 Close
方法,因为根据我所知,你可以在任何对象中多次调用 Dispose
方法。但这只是我的猜测,我更愿意听取专家的意见。
Close()
和 Dispose()
应该做相同的事情(一个应该调用另一个)。
然而,Close()
不需要多次可调用。
您应该继承基础的 DbDataReader
类而不是重新实现整个类;如果这样,您需要重写抽象方法 Close()
。
.Dispose()
应该只做一件事: 释放非托管资源。因此,只有在调用该函数是释放非托管资源的正确方法时,您才应该调用.Close()
。在这种情况下,我认为是正确的(它将释放数据库连接),因此您应该调用该函数。
它们几乎是相同的东西,除了 Close 可以被多次调用而不会引发异常。
如果您使用对象超过一次,请实现 .Close,如果只使用一次,请实现 .Dispose()。
IDataReader
是一个接口,它并不规定具体的实现方式。